Sdílet prostřednictvím


char, wchar_t, char8_t, char16_t, char32_t

Typy char, , wchar_t, char8_tchar16_ta char32_t jsou předdefinované typy, které představují alfanumerické znaky, neosamocené glyfy a netisknutelné znaky.

Syntaxe

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

Poznámky

Typ char byl původní typ znaku v jazyce C a C++. Typ char ukládá znaky ze znakové sady ASCII nebo libovolné znakové sady ISO-8859 a jednotlivé bajty vícebajtů, jako je Shift-JIS nebo kódování UTF-8 znakové sady Unicode. V kompilátoru char Microsoftu je 8bitový typ. Je to odlišný typ od obou signed char a unsigned char. Ve výchozím nastavení se proměnné typu char zpřednostní na int typ, pokud signed char se nepoužívá možnost kompilátoru /J . V části /Jse považují za typ unsigned char a upřednostní se na int rozšíření bez znaménka.

unsigned char Typ se často používá k reprezentaci bajtu, což není integrovaný typ v jazyce C++.

Typ wchar_t je celoimísní typ znaku definovaný implementací. V kompilátoru Microsoftu představuje 16bitový znak používaný k uložení kódování Unicode jako UTF-16LE, nativního typu znaku v operačních systémech Windows. Široké verze znaků funkcí knihovny UCRT (Universal C Runtime) používají wchar_t jako parametry a návratové hodnoty, stejně jako široké verze znaků nativního rozhraní API systému Windows.

char8_tchar16_tchar32_t 8bitové, 16bitové a 32bitové znaky představují 8bitové, 32bitové a 32bitové typy. (char8_t je v jazyce C++20 nový a vyžaduje možnost kompilátoru /std:c++20 /std:c++latest .) Unicode kódované jako UTF-8 lze uložit v char8_t typu. char8_t Řetězce a char typy se označují jako úzké řetězce, i když se používají ke kódování znaků Unicode nebo více bajtů. Unicode kódovaný jako UTF-16 lze uložit v char16_t typu a Unicode kódovaný jako UTF-32 lze uložit v char32_t typu. Řetězce těchto typů a wchar_t všechny jsou označovány jako široké řetězce, i když termín často odkazuje konkrétně na řetězce typu wchar_t .

Ve standardní knihovně jazyka basic_string C++ je typ specializovaný pro úzké i široké řetězce. Použijte std::string , pokud jsou znaky typu char, std::u8string pokud jsou znaky typu char8_t, std::u16string pokud jsou znaky typu char16_t, std::u32string pokud jsou znaky typu char32_t, a std::wstring kdy jsou znaky typu wchar_t.

Další typy, které představují text, včetně std::stringstream std::cout a mají specializace pro úzké a široké řetězce.