-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 ++ 11で要求されたものを除いて、標準C ++ではUnicodeをサポートしていません)。

#includeへのヘッダーについてはMSDNを確認してください

また、コンソールウィンドウにインストールされているフォントには、他のWindowsプログラムで表示できるものが不足していることがよくあります。疑わしい場合は、プログラム出力をファイルにリダイレクトし、ワードパッドなどでそのファイルを開きます。

于 2013-02-08T01:02:12.997 に答える