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

StackOverflow https://stackoverflow.com/questions/7333256

  •  27-10-2019
  •  | 
  •  

質問

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

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

役に立ちましたか?

解決

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

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

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

他のヒント

これはうまくいくようです。常に機能するのか、それとも偶然なのかはわかりませんが、表示する価値があると思いました。 ジェネラコディセタグプレ

プリント ジェネラコディセタグプレ

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top