-1
#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.
        }
    }
}

我的机器是基于 unicode 的 Windows 7。

上面的代码没有输出任何阿拉伯字符,而在源文件中可以正确显示相同的字符,这证明我的机器支持显示阿拉伯字符。

为什么阿拉伯字符不能在控制台窗口中显示?

4

1 回答 1

0

第一行应该是

 _setmode(_fileno(stdout), _O_WTEXT); 

这是用于宽字符输出的适当 imbue() 的 Windows 等效项(它们仍然不支持标准 C++ 中的 Unicode,除非 C++11 提出了要求)。

检查 MSDN 的标头以#include

另请注意,安装在控制台窗口中的字体通常缺少许多其他 Windows 程序可以显示的内容。如有疑问,请将程序输出重定向到文件并使用写字板等打开该文件。

于 2013-02-08T01:02:12.997 回答