ANSI文字(char)からUnicode文字(wchar_t)に変換するにはどうすればよいですか?ANSI文字(char)からUnicode文字(wchar_t)に変換するにはどうすればよいですか?
この目的のためのクロスプラットフォームのソースコードはありますか?
ANSI文字(char)からUnicode文字(wchar_t)に変換するにはどうすればよいですか?ANSI文字(char)からUnicode文字(wchar_t)に変換するにはどうすればよいですか?
この目的のためのクロスプラットフォームのソースコードはありますか?
はい、<cstdlib>
には、mbstowcs()
とwcstombs()
があります。
私はこれまでに、これを使用する方法についてsome codeを投稿しました。多分役立つかもしれません。関数を2回、長さを取得するために1回、実際の変換を1回実行するようにしてください。 (ここでは、関数の意味の少しdiscussionです。)手動のchar配列の代わりに、おそらくstd::vector<char>
またはstd::vector<wchar_t>
が好きでしょう。
wchar_t
は、Unicodeとは関係ありません。 Unicodeが必要な場合は、別のライブラリ(iconv()
など)を使用してwchar_t
からUnicodeにさらに変換し、Unicodeコードポイントのデータ型としてwchar_t
を使用しないでください。代わりに、レガシーシステムではuint32_t
、最新のシステムではchar32_t
を使用してください。
どうやらこれは動作しますが、私はそれが常に動作するかどうかを知りたりしないでください:
const char* c = "hey yo";
wstring s(c, c + 6);
wcout << s << endl;
wcin.get();
プリント
hey yo
おかげで、しかし、これらを関数は文字列変換用です。 –
1文字に相当する 'mbtowc()'と 'wctomb()'があります。 –
@Amirあなたはそれらを使用して、ある文字長の文字列を1文字長の別の文字列に変換し、その文字を抜き出すことができます。 –