char, wchar_t, char8_t, char16_t, char32_t

Die Typen char, wchar_t, char8_t, char16_t, und char32_t sind integrierte Typen, die alphanumerische Zeichen, nicht alphanumerische Glyphen und nicht druckbaren Zeichen darstellen.

Syntax

char     ch1{ 'a' };  // or { u8'a' }
wchar_t  ch2{ L'a' };
char16_t ch3{ u'a' };
char32_t ch4{ U'a' };

Hinweise

Der char Typ war der ursprüngliche Zeichentyp in C und C++. Der char Typ kann verwendet werden, um Zeichen aus dem ASCII-Zeichensatz oder einem der ISO-8859-Zeichensätze sowie einzelne Bytes von Multibytezeichen wie Shift-JIS oder die UTF-8-Codierung des Unicode-Zeichensatzes zu speichern. Im Microsoft-Compiler char ist ein 8-Bit-Typ. Es ist ein unterschiedlicher Typ sowohl als auch signed charunsigned char. Standardmäßig werden Variablen vom Typ char höhergestuft int als vom Typ signed char , es sei denn, die /J Compileroption wird verwendet. Unter /J, werden sie als Typ unsigned char behandelt und ohne Signierungserweiterung heraufgestuft int .

Der Typ unsigned char wird häufig verwendet, um ein Byte darzustellen, bei dem es sich nicht um einen integrierten Typ in C++ handelt.

Der wchar_t Typ ist ein implementierungsdefinierter Breitzeichentyp. Im Microsoft-Compiler stellt es ein 16-Bit-breites Zeichen dar, das zum Speichern von Unicode-Codiert als UTF-16LE verwendet wird, dem systemeigenen Zeichentyp unter Windows-Betriebssystemen. Die breiten Zeichenversionen der UCRT-Bibliotheksfunktionen (Universal C Runtime) verwenden wchar_t und deren Zeiger- und Arraytypen als Parameter und Rückgabewerte, ebenso wie die breiten Zeichenversionen der systemeigenen Windows-API.

Die char8_tZeichen und char16_tchar32_t Typen stellen 8-Bit-, 16-Bit- bzw. 32-Bit-Zeichen dar. (char8_t ist neu in C++20 und erfordert die /std:c++20/std:c++latest Compileroption.) Unicode-codiert als UTF-8 kann im char8_t Typ gespeichert werden. Zeichenfolgen und char Typ werden als schmale Zeichenfolgen bezeichnet, auch wenn sie zum Codieren von char8_t Unicode- oder Multibytezeichen verwendet werden. Unicode-codiert als UTF-16 kann im char16_t Typ gespeichert werden, und Unicode-codiert als UTF-32 kann im char32_t Typ gespeichert werden. Zeichenfolgen dieser Typen und wchar_t werden alle als breite Zeichenfolgen bezeichnet, obwohl der Begriff häufig speziell auf Zeichenfolgen des wchar_t Typs verweist.

In der C++-Standardbibliothek ist der basic_string Typ sowohl für schmale als auch für breite Zeichenfolgen spezialisiert. Wird verwendet std::string , wenn die Zeichen vom Typ charsind, std::u8string wenn die Zeichen vom Typ char8_tsind, std::u16string wenn die Zeichen vom char16_tTyp sind, std::u32string wenn die Zeichen vom Typ char32_tsind, und std::wstring wenn die Zeichen vom Typ wchar_tsind. Andere Typen, die Text darstellen, einschließlich std::stringstream spezialisierungen std::cout für schmale und breite Zeichenfolgen.