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_t
sind, 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.