2013-04-07 186 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并点击链接。