char, wchar_t, char8_t, char16_t, char32_t
Les types , , char8_t
wchar_t
char16_t
, char32_t
et sont des types char
intégrés qui représentent des caractères alphanumériques, des glyphes non alphanumériques et des caractères non imprimables.
Syntaxe
char ch1{ 'a' }; // or { u8'a' }
wchar_t ch2{ L'a' };
char16_t ch3{ u'a' };
char32_t ch4{ U'a' };
Notes
Le char
type était le type de caractère d’origine en C et C++. Le char
type peut être utilisé pour stocker des caractères à partir du jeu de caractères ASCII ou de l’un des jeux de caractères ISO-8859, ainsi que des octets individuels de caractères multioctets tels que Shift-JIS ou l’encodage UTF-8 du jeu de caractères Unicode. Dans le compilateur Microsoft, char
il s’agit d’un type 8 bits. Il s’agit d’un type distinct des deux signed char
et unsigned char
. Par défaut, les variables de type char
sont promues comme int
si à partir du type signed char
, sauf si l’option du /J
compilateur est utilisée. Sous /J
, ils sont traités comme unsigned char
type et sont promus int
sans extension de signe.
Le type unsigned char
est souvent utilisé pour représenter un octet, qui n’est pas un type intégré en C++.
Le wchar_t
type est un type de caractère large défini par l’implémentation. Dans le compilateur Microsoft, il représente un caractère à l’échelle 16 bits utilisé pour stocker Unicode encodé en UTF-16LE, le type de caractère natif sur les systèmes d’exploitation Windows. Les versions à caractères larges des fonctions de bibliothèque UCRT (Universal C Runtime) utilisent wchar_t
et ses types de pointeur et de tableau en tant que paramètres et valeurs de retour, comme les versions de caractères larges de l’API Windows native.
Les char8_t
types et char32_t
les types char16_t
représentent respectivement des caractères larges 8 bits, 16 bits et 32 bits. (char8_t
est nouveau dans C++20 et nécessite l’option ou /std:c++latest
le /std:c++20
compilateur.) Unicode encodé en UTF-8 peut être stocké dans le char8_t
type. Les chaînes de char8_t
type et char
de type sont appelées chaînes étroites , même lorsqu’elles sont utilisées pour encoder des caractères Unicode ou multioctets. Unicode encodé en UTF-16 peut être stocké dans le char16_t
type, et Unicode encodé en UTF-32 peut être stocké dans le char32_t
type. Les chaînes de ces types et wchar_t
sont toutes appelées chaînes larges , bien que le terme fait souvent référence spécifiquement aux chaînes de wchar_t
type.
Dans la bibliothèque standard C++, le basic_string
type est spécialisé pour les chaînes étroites et larges. Utilisez std::string
quand les caractères sont de type char
, std::u8string
lorsque les caractères sont de type char8_t
, std::u16string
lorsque les caractères sont de type char16_t
, lorsque les caractères sont de type , std::u32string
lorsque les caractères sont de type char32_t
, et std::wstring
quand les caractères sont de type wchar_t
. Autres types qui représentent du texte, y compris std::stringstream
et std::cout
qui ont des spécialisations pour les chaînes étroites et larges.
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour