今日、私はいくつかの C++ の基礎を学んでいて、 について知りましたwchar_t
。なぜこのデータ型が実際に必要なのか、どのように使用するのかを理解できませんでした。
7 に答える
wchar_t
固定幅のマルチバイトエンコーディングでテキストを表すことを目的としています。はwchar_t
通常 2 バイトのサイズであるため、任意の 2 バイト エンコーディングでテキストを表すために使用できます。また、最も一般的な UTF-16 である可変幅のマルチバイト エンコーディングでテキストを表すためにも使用できます。
サイズが 4 バイトのプラットフォームでwchar_t
は、UCS-4 (Unicode) を使用して任意のテキストを表すために使用できますが、ほとんどのプラットフォームでは 2 バイトしかないため、可変幅エンコーディング (通常は UTF-16) でのみ Unicode を表すことができます。 . char
UTF-8 や GB 18030 などの可変幅エンコーディングで使用するのがより一般的です。
wchar_t
広く使用されている最新のオペレーティング システムは Windows だけです。これは、Windows が U+FFFF を超えて拡張される前に Unicode を採用していたため、固定幅の 2 バイト エンコーディング (UCS-2) が適切に見えたためです。現在、UCS-2 は Unicode 全体を表すには不十分であるため、Windows は UTF-16 を使用しますが、それでもwchar_t
2 バイトのコード単位があります。
wchar_t
ワイド文字です。これは、通常の文字よりも多くのメモリを必要とする文字を表すために使用されますchar
。たとえば、WindowsAPIで広く使用されています。
ただし、aのサイズwchar_t
は実装に依存し、。より大きくなるとは限りませんchar
。8ビットを超える特定の形式の文字フォーマットをサポートする必要がある場合は、それぞれ32ビットと16ビットであることが保証されているchar32_t
に目を向けることができます。char16_t
wchar_tデータ型は、表示に使用されますwide characters that will occupy 16 bits
。このデータ型は「2 または 4」バイトを占有します。
ほとんどのwchar_t
データ型は、日本語などの国際言語が使用されるときに使用されます。
ほとんどの方が回答されていると思いますが、私もC++の基礎を学んでいて知ったのでwchar_t
、検索してわかったことをお伝えしたいと思います。
wchar_t
ASCII 255 を超える文字を格納する必要がある場合に使用されます。これらの文字は、文字タイプ 'char' よりもサイズが大きいためです。したがって、より多くのメモリが必要です。例えば:
wchar_t var = L"Привет мир\n"; // hello world in russian
通常、サイズは 8 ビット文字よりも大きくなります。
Windowsオペレーティングシステムはそれをかなり使用しています。
通常、外国語が関係する場合に使用されます。
wchar_tタイプは、拡張文字セットの文字に使用されます。これは、サイズcharの単一文字を保持する文字列とは対照的に、拡張文字セットの単一文字を保持できる文字列であるwstringで使用される他の用途の中でも、単一の記号を表すために複数の文字を使用する(utf8など) )。
wchar_tのサイズはロケールに依存し、ロケールでサポートされている最大の拡張文字セットのすべてのメンバーを表すことができると言われている標準によるものです。