2011-03-12 107 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函數。

相關問題