char、wchar_t、char8_t、char16_t、char32_t
char
、wchar_t
、char8_t
、char16_t
、char32_t
の各型は組み込み型であり、英数字、非英数字グリフ、非印刷文字を表します。
構文
char ch1{ 'a' }; // or { u8'a' }
wchar_t ch2{ L'a' };
char16_t ch3{ u'a' };
char32_t ch4{ U'a' };
解説
char
型は、もともとは C および C++ の文字型でした。 char
型を使用して、ASCII 文字セットの文字または ISO-8859 のいずれかの文字セットの文字、および Shift-JIS や Unicode 文字セットの UTF-8 エンコードなどのマルチバイト文字の個々のバイトを格納できます。 Microsoft コンパイラでは、char
は 8 ビット型です。 これは、signed char
とも unsigned char
とも異なる型です。 既定では、/J
コンパイラ オプションを使用しない限り、char
型の変数は signed char
型からであるかのように int
に上位変換されます。 /J
のもとでは、それらは unsigned char
型として扱われ、符号拡張なしで int
に上位変換されます。
C++ の組み込み型でない byte を表すために、しばしば unsigned char
型が使用されます。
wchar_t
型は、実装定義のワイド文字型です。 Microsoft コンパイラでは、Windows オペレーティング システムのネイティブ文字型である UTF-16LE としてエンコードされた Unicode を格納するために使用される 16 ビット ワイド文字を表します。 ユニバーサル C ランタイム (UCRT) ライブラリ関数のワイド文字バージョンは wchar_t
を使用し、そのポインター型と配列型をパラメーターとして使用して、ネイティブ Windows API のワイド文字バージョンと同様に値を返します。
char8_t
、char16_t
、char32_t
の各型はそれぞれ、8 ビット、16 ビット、32 ビットのワイド文字を表します。 (char8_t
C++20 の新機能であり、または/std:c++latest
コンパイラ オプションが/std:c++20
必要です)。)UTF-8 としてエンコードされた Unicode は、型にchar8_t
格納できます。 char8_t
型と char
型の文字列は、Unicode またはマルチバイト文字のエンコードに使用される場合でも、ナロー 文字列と呼ばれます。 UTF-16 としてエンコードされた Unicode は char16_t
型で格納でき、UTF-32 としてエンコードされた Unicode は char32_t
型で格納できます。 これらの型と wchar_t
の文字列はすべてワイド 文字列と呼ばれますが、この用語はしばしば、特に wchar_t
型の文字列を指します。
C++ 標準ライブラリでは、basic_string
型はナロー文字列とワイド文字列の両方に向けて特殊化されています。 文字が char
型の場合は std::string
、文字が char8_t
型の場合は std::u8string
、文字が char16_t
型の場合は std::u16string
、文字が char32_t
型の場合は std::u32string
、文字が wchar_t
型の場合は std::wstring
を使用します。 std::stringstream
やstd::cout
など、テキストを表すその他の型は、ナロー文字列とワイド文字列向けに特殊化されています。
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示