2013-04-07 181 views
1

如何在C++ 11中打印(cout/wcout/...)char32_t到控制檯?將char32_t打印到控制檯

下面的代碼打印十六進制值:

u32string s2 = U"Добрый день"; 
for(auto x:s2){ 
    wcout<<(char32_t)x<<endl; 
} 
+0

什麼是您的操作系統? – 2013-04-07 00:58:18

+0

我想有一個操作系統獨立解決方案(如果可能的話)。我在Linux x86_64上。 – 2013-04-07 00:59:01

+0

不可能。如果沒有重大黑客攻擊,將無法在Windows上運行。另外,我不認爲'wcout'應該打印爲字符而不是'char'和'wchar_t'。 'char32_t'既不是。 – 2013-04-07 01:01:20

回答

2

首先,我不認爲wcout應該打印爲字符什麼,但charwchar_tchar32_t既不是。

下面是打印個人wchar_t's一個示例程序:

#include <iostream> 

using namespace std; 

int main() 
{ 
    wcout << (wchar_t)0x41 << endl; 
    return 0; 
} 

輸出(ideone):

A 

目前,它是不可能得到在控制檯一致的Unicode輸出,即使在主要操作系統。通過cout,wcout,,wprintf()等簡化的Unicode文本輸出將不會在沒有大的黑客攻擊的Windows上工作。在Windows控制檯中獲取可讀的Unicode文本的問題在於具有並能夠選擇正確的Unicode字體。 Windows的控制檯在這方面已經很糟糕。請參閱this answer of mine並點擊鏈接。