2

ANSI文字(char)からUnicode文字(wchar_t)に、またはその逆に変換するにはどうすればよいですか?

この目的のためのクロスプラットフォームのソースコードはありますか?

4

3 に答える 3

6

はい、<cstdlib>あなたにはとがmbstowcs()ありwcstombs()ます。

私は以前にこれを使用する方法についていくつかのコードを投稿しました、多分それは役に立つでしょう。関数を2回実行してください。1回は長さを取得し、もう1回は実際の変換を実行します。(関数の意味について少し説明します。)手動のchar配列の代わりに、おそらくastd::vector<char>またはを好みstd::vector<wchar_t>ます。

wchar_tこれはUnicodeとは何の関係もないことに注意してください。Unicodeが必要な場合はwchar_t、別のライブラリ(など)を使用してさらにUnicodeに変換する必要があり、Unicodeコードポイントのデータ型としてiconv()使用しないでください。wchar_t代わりに、uint32_tレガシーシステムまたはchar32_t最新のシステムで使用してください。

于 2011-09-07T11:44:18.363 に答える
1

どうやらこれはうまくいくようですが、それが常に機能するのか、それとも偶然の一致なのかはわかりませんが、示す価値があると思いました。

const char* c = "hey yo";
wstring s(c, c + 6);

wcout << s << endl;
wcin.get();

プリント

hey yo
于 2011-09-07T11:47:37.207 に答える
0

16ビット文字だけでなく実際にUnicodeを使用している場合は、ICUiconvなどのライブラリを参照してください。つまり、Unicodeは、単純なwchar_tのように、16ビット文字でさえも単一文字を処理するだけではありません。

于 2011-09-07T11:47:02.060 に答える