49

今日、私はいくつかの C++ の基礎を学んでいて、 について知りましたwchar_t。なぜこのデータ型が実際に必要なのか、どのように使用するのかを理解できませんでした。

4

7 に答える 7

45

wchar_t固定幅マルチバイトエンコーディングでテキストを表すことを目的としています。はwchar_t通常 2 バイトのサイズであるため、任意の 2 バイト エンコーディングでテキストを表すために使用できます。また、最も一般的な UTF-16 である可変幅のマルチバイト エンコーディングでテキストを表すためにも使用できます。

サイズが 4 バイトのプラットフォームでwchar_tは、UCS-4 (Unicode) を使用して任意のテキストを表すために使用できますが、ほとんどのプラットフォームでは 2 バイトしかないため、可変幅エンコーディング (通常は UTF-16) でのみ Unicode を表すことができます。 . charUTF-8 や GB 18030 などの可変幅エンコーディングで使用するのがより一般的です。

wchar_t広く使用されている最新のオペレーティング システムは Windows だけです。これは、Windows が U+FFFF を超えて拡張される前に Unicode を採用していたため、固定幅の 2 バイト エンコーディング (UCS-2) が適切に見えたためです。現在、UCS-2 は Unicode 全体を表すには不十分であるため、Windows は UTF-16 を使用しますが、それでもwchar_t2 バイトのコード単位があります。

于 2012-11-22T10:00:19.773 に答える
12

wchar_tワイド文字です。これは、通常の文字よりも多くのメモリを必要とする文字を表すために使用されますchar。たとえば、WindowsAPIで広く使用されています。

ただし、aのサイズwchar_tは実装に依存し、。より大きくなるとは限りませんchar。8ビットを超える特定の形式の文字フォーマットをサポートする必要がある場合は、それぞれ32ビットと16ビットであることが保証されているchar32_tに目を向けることができます。char16_t

于 2012-11-22T09:49:58.030 に答える
4

wchar_tデータ型は、表示に使用されますwide characters that will occupy 16 bits。このデータ型は「2 または 4」バイトを占有します。

ほとんどのwchar_tデータ型は、日本語などの国際言語が使用されるときに使用されます。

于 2012-11-22T10:00:14.430 に答える
4

ほとんどの方が回答されていると思いますが、私もC++の基礎を学んでいて知ったのでwchar_t、検索してわかったことをお伝えしたいと思います。

  1. wchar_tASCII 255 を超える文字を格納する必要がある場合に使用されます。これらの文字は、文字タイプ 'char' よりもサイズが大きいためです。したがって、より多くのメモリが必要です。

    例えば:

           wchar_t var = L"Привет мир\n"; // hello world in russian
    
  2. 通常、サイズは 8 ビット文字よりも大きくなります。

  3. Windowsオペレーティングシステムはそれをかなり使用しています。

  4. 通常、外国語が関係する場合に使用されます。

于 2020-10-25T15:54:49.777 に答える
2

wchar_tタイプは、拡張文字セットの文字に使用されます。これは、サイズcharの単一文字を保持する文字列とは対照的に、拡張文字セットの単一文字を保持できる文字列であるwstringで使用される他の用途の中でも、単一の記号を表すために複数の文字を使用する(utf8など) )。

wchar_tのサイズはロケールに依存し、ロケールでサポートされている最大の拡張文字セットのすべてのメンバーを表すことができると言われている標準によるものです。

于 2012-11-22T09:55:47.493 に答える