Poznámka
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Typy char
, , wchar_t
, char8_t
char16_t
a 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 /J
se 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_t
char16_t
char32_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.