2010-10-14 68 views
6

我想打印在Xcode到控制檯上的wstring/wchar_t的,但很遺憾,只有基本字符工作(我認爲ASCII)字符,一切被顯示的數字,例如以下:xcode std :: wcout用wchar_t或std :: wstring!

std::cout << "äöüu"<< std::endl; 
std::wcout << L"äöüu" << std::endl; 

而如預期我得到了使用時,以下爲wchar_t的COUT版版畫 「äöüu」:

\ 344 \ 366 \ 374U

有關如何解決這個問題的任何想法?我使用xcode 3.2.2 64位和gcc 4.2,文件編碼設置爲Unicode(UTF-8)

謝謝!

+1

這可能是預期的行爲,因爲終端編碼通常是UTF-8,而std :: wcout處理UTF-32。但是請注意,如果您使用'clang ++'編譯(可在LLVM 2.8中使用,但尚未與Xcode一起分發),它會同時輸出正確的文本。 – Nate 2010-10-14 17:49:37

+0

將輸出重定向到文件或僅在終端上時會發生嗎? – ybungalobill 2010-12-14 20:38:16

回答

0

如果使用wxWidgets,wxString會自動使用wxConvCurrent爲您處理。

1

我有一個類似的問題,但與wostream/wofstream。谷歌搜索它,這是啓發:

tc_ofstream ofs; 

if (sizeof(TCHAR) == sizeof(wchar_t)) 
{ 
    //codecvt_utf16<TCHAR> utf16; cannot make use of non-dynamic value 
    locale loc (locale::classic() ,new codecvt_utf16<TCHAR>); 
    ofs.imbue(loc); 
    ofs.open(_T(".\\test.txt") ,tc_ios::binary); 

    TCHAR BOM = 0xFEFF; ofs << BOM; 
    ofs << _T("UNICODE") << endl; 
} 
else 
{ 
    ofs.open(_T(".\\test.txt") ,tc_ios::binary); 
    ofs << _T("NON-UNICODE") << endl; 
} 
+0

tc_ofstream是wofstream或ofstream的typedef(取決於UNICODE – 2010-11-24 19:59:33

相關問題