ANSI文字(char)からUnicode文字(wchar_t)に、またはその逆に変換するにはどうすればよいですか?
この目的のためのクロスプラットフォームのソースコードはありますか?
はい、<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
最新のシステムで使用してください。
どうやらこれはうまくいくようですが、それが常に機能するのか、それとも偶然の一致なのかはわかりませんが、示す価値があると思いました。
const char* c = "hey yo";
wstring s(c, c + 6);
wcout << s << endl;
wcin.get();
プリント
hey yo