C++のギリシャ語の辞書のようなプログラムを作成したいと思い、CodeBlocksを使用しています。問題は、コンソールやファイルとの間で非ASCII文字を読み書きする方法を理解できないことです。私はwchar_t、char32_tなどのようにオンラインで見つかったさまざまな方法を試しましたが、どれも私のために働いていませんでした。C++でファイルと標準入力を使用してUnicode-32文字を読み書きする方法は?
wchar_t c;
wcin>>c;
wcout<<c<<"\n";
上記のコードは、「単純な」ギリシャ文字、たとえば「α」のために機能しました。それは 'ᾧ'のようなポリトニック文字では機能しませんでした。私は、それらを入力したときは常に具体的には、polytonicギリシャ文字は、コンソールに疑問符として登場。
wchar_t c;
wifstream wfin("test_unicode.txt");
wfin>>c;
wcout<<c<<"\n";
上記のコード、任意の入力のためにも、ラテン文字を動作しませんでした。出力は常に空白でした。
wchar_t c = 'α';
wcout<<c<<"\n";
はまた、私は、プログラム内のギリシャ文字ではwchar_tかwstringの変数を初期化することができていない、上記のコードは、私の画面上には何も出力しません。
助けてください!
Unicode-32とUTF-8を混同しないでください。 – user31264
私は、あなたの質問を絞り込むことをお勧めします。指定されたエンコーディングでテキストファイルを読むことになります(btw UTF8はUTF32よりはるかに一般的です。 2.入力ファイルが本当に必要なエンコーディングであることを確認します(おそらく、ファイルの16進数ダンプを見てください)。 3. [MVCE](http://stackoverflow.com/help/mcve)にファイルの読み取りを試みます。 – hyde
もう1つのことは、端末があなたが望む文字を表示できることをテストする必要があります。できない場合は、出力をファイルにリダイレクトし、その16進ダンプを検査する必要があります。この文字を表示できない理由は、少なくとも、ターミナルはそれらの文字をも持っていないエンコーディングを使用しているので、それらの文字のフォントがありません(代わりにプレースホルダーグリフが描画されます)。 – hyde