1

私が持っていると仮定して

uint32_t a(3084);

ユニコード文字を格納する文字列を作成したいと思いますU+3084。つまり、値を取得aして、UTF8 テーブル/文字セットの正しい文字の座標として使用する必要があります。

今、明らかにうまくいきません.std::to_string()標準には数値とcharの間で変換する関数がたくさんあります.UTF8サポートを許可して出力するものは何も見つかりませんstd::string.

この関数を最初から作成する必要があるのか​​、それとも C++11 標準にそれを支援できるものがあるのか​​ を尋ねたいと思います。私のコンパイラ ( gcc/g++ 4.8.1 ) は を完全にサポートしていないことに注意してくださいcodecvt

4

4 に答える 4

1

C++ 標準には、std::codecvt<char32_t, char, mbstate_t>22.4.1.4 [locale.codecvt] パラグラフ 3 に従って UTF-32 と UTF-8 の間で変換するファセットが含まれています。残念ながら、std::codecvt<...>ファセットは使いにくいものです。ある時点で、コード変換のケースを取るストリーム バッファのフィルタリングについての議論がありました (標準 C++ ライブラリはとにかくそれらを実装する必要がありますstd::basic_filebuf<...>) が、これらの痕跡は見られません。

于 2013-11-14T03:21:58.597 に答える
0
auto s = u8"\343\202\204"; // Octal escaped representation of HIRAGANA LETTER YA
std::cout << s << std::endl;

版画

私にとっては(g ++ 4.8.1を使用)。sご想像のとおりtype がconst char*ありますが、これが実装定義かどうかはわかりません。残念ながら、私の知る限り、C++ は UTF8 文字列の操作をサポートしていません。そのためには、のようなライブラリを使用する必要がありますGlib::ustring

于 2013-11-14T03:19:15.500 に答える