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, nichtalphanumerische Glyphen und nicht druckbare 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 speichert 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. Im Microsoft-Compiler ist char ein 8-Bit-Typ. Es unterscheidet sich von signed char als auch von unsigned char. Standardmäßig werden Variablen vom Typ char auf int höhergestuft, als wenn sie vom Typ signed char wären, es sei denn, die /J Compileroption wird verwendet. Unter /J, werden sie als Typ unsigned char behandelt und ohne Signierungserweiterung auf int heraufgestuft.

Der Typ unsigned char wird häufig zur Darstellung eines Bytes verwendet, bei dem es nicht um einen in C++ integrierten Typ 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_t,char16_t und char32_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 oder /std:c++latest Compileroption.) Unicode-codiert als UTF-8 kann im char8_t Typ gespeichert werden. Zeichenfolgen von char8_t und char Typ werden als schmale Zeichenfolgen bezeichnet, auch wenn sie zum Codieren von 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.

Der basic_string-Typ ist in der C++-Standardbibliothek weist Spezialisierungen für schmale und Breitzeichenfolgen auf. Verwenden Sie std::string, wenn die Zeichen vom Typ char sind, std::u8string wenn die Zeichen vom Typ char8_t sind, std::u16string wenn die Zeichen vom Typ char16_tsind, std::u32string, wenn die Zeichen vom Typ char32_t sind, und std::wstring, wenn die Zeichen vom Typ wchar_t sind.

Andere Typen, die Text darstellen, einschließlich std::stringstream und std::cout haben Spezialisierungen für schmale und breite Zeichenfolgen.