2011-03-12 79 views
2

当前我试图打开以Unicode格式保存的文本文件,将其内容复制到wstring中,然后将其显示在控制台上。因为我想了解更多关于使用字符串和打开文件的信息,我正在用一个简单的程序对它进行试验。这里是来源。在C++中打开Unicode文本文件并显示其内容

int main() 
{ 
    std::wfstream myfile("C:\\Users\\Jacob\\Documents\\openfiletest.txt"); 
    if(!myfile.is_open()) 
    { 
     std::cout << "error" << std::endl; 
    } 
    else 
    { 
     std::cout << "opened" << std::endl; 
    } 
    std::wstring mystring; 
    myfile >> mystring; 
    std::wcout << mystring << std::endl; 
    system("PAUSE"); 
} 

当我尝试以显示它它显示■W H Y中的控制台上时,它应该显示WHY(说实在的,“WHY WONT你的工作”,但为什么它是不完整的病担心以后我猜)。 诚实地说,使用Unicode对我来说不是很重要,因为这不是一个我会销售的程序(更多的仅仅是我自己)。我很想熟悉它,因为我最终计划需要了解在C++中使用Unicode的知识。我还使用boost文件系统来处理目录和多线程,同时使用C++/cli作为GUI。我的问题:如果我现在不需要使用Unicode,是否真的应该使用Unicode呢?如果是这样,我该如何解决这个问题,并且在那里和跨平台库来处理字符串和使用不同的文件Unicode编码(使用UTF-16的窗口和使用UTF-32的Linux)。

此外,任何关于Unicode的C++或Unicode的文章将不胜感激。这是我找到的一个,它有一点帮助。 The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!)

谢谢。

编辑:这里是另一个arcticle我才发现这是有用的Reading UTF-8 Strings with C++

+0

[写入wstring到希伯来语/阿拉伯语言文件的问题]的可能重复(http://stackoverflow.com/questions/3336690/problem-in-writing-wstring-to-a-file-for-hebrew -阿拉伯语) – 2011-03-12 21:30:53

回答

2

这是一个byte order mark。如果您在文件的开头找到一个,请将其剥离。

而字母之间的空格可能是因为控制台不是很宽的字符友好。

1

它只显示一个单词,因为myfile是一个流,而operator>>只提取一个由流中的空格分隔的字符串。您可能想要尝试getline函数。

相关问题