3

cout( / wcout/ ...) char32_t を C++11 のコンソールに出力するにはどうすればよいですか?

次のコードは、16 進値を出力します。

u32string s2 = U"Добрый день";
for(auto x:s2){
    wcout<<(char32_t)x<<endl;
}
4

2 に答える 2

4

まず、wcout文字として印刷することになっているとは思わないが、charand wchar_t. char32_tどちらでもありません。

個々の を出力するサンプル プログラムを次に示しますwchar_t's

#include <iostream>

using namespace std;

int main()
{
  wcout << (wchar_t)0x41 << endl;
  return 0;
}

出力 ( ideone ):

A

現在、主要な OS でもコンソールで一貫した Unicode 出力を取得することは不可能です。coutwcoutprintf()などを介した単純な Unicode テキスト出力は、wprintf()主要なハックなしでは Windows では機能しません。Windows コンソールで読み取り可能な Unicode テキストを取得する際の問題は、適切な Unicode フォントを選択できることにあります。Windows のコンソールは、この点でかなり壊れています。私のこの回答を見て、その中のリンクをたどってください。

于 2013-04-07T01:29:38.503 に答える