#include <iostream>
#include <locale>
using namespace std;
int main()
{
wcout.imbue(/* What to place here? */);
for (wchar_t c = 0; c <= 0xFFFF; c++)
{
if (IsHumanReadable(c))
{
wcout << c; // c may be a Chinese or Arabic character.
}
}
}
我的机器是Windows 7,它是基于unicode的。
上面的代码不输出任何阿拉伯字符,而相同的字符可以在源文件中正确显示,这证明我的机器支持显示阿拉伯字符。
为什么阿拉伯字符不能显示在控制台窗口中?
答案 0 :(得分:0)
第一行应该是
_setmode(_fileno(stdout), _O_WTEXT);
对于宽字符输出,它是相当于适当的imbue()的Windows(除了C ++ 11提出的要求之外,它们仍然不支持标准C ++中的Unicode)。
检查MSDN以获取#include
的标头 另请注意,安装在控制台窗口中的字体往往缺少很多其他Windows程序可以显示的内容。如有疑问,请将程序输出重定向到文件并使用Wordpad等打开该文件。