55

私が理解していることから、acharは ASCII 文字を格納char16_tしてchar32_tも安全ですが、Unicode の文字を格納しても安全です。 ?)。しかし、私はその背後にある目的が何であるか疑問に思っていwchar_tます。その型を新しいコードで使用する必要がありますか、それとも単に古いコードをサポートするためのものですか? wchar_t私が理解していることから、そのサイズが a よりも大きいという保証がなかった場合、古いコードの の目的は何でしたcharか? 明確化はいいでしょう!

4

2 に答える 2

23

この型wchar_tは、Unicode が 16 ビット表現の作成を約束したときに標準に組み込まれました。ほとんどのベンダーはwchar_t32 ビットを選択していますが、ある大手ベンダーは 16 ビットを選択しています。Unicode は 16 ビット (たとえば 20 ビット) 以上を使用するため、より良い文字タイプを使用する必要があると感じられました。

の意図char16_tは UTF16 を表すことであり、 char32_tUnicode 文字を直接表すことを意図しています。ただし、wchar_t基本的なインターフェイスの一部としてを使用しているシステムでは、 wchar_t. 制約がない場合はchar、UTF8 を使用して Unicode を表現するために個人的に使用します。char16_tとの問題char32_tは、標準の C++ ライブラリでさえ完全にサポートされていないことです。たとえば、これらの型を直接サポートするストリームはなく、これらの型のストリームをインスタンス化するだけでは機能しません。

于 2013-09-28T16:06:47.380 に答える