Null-terminated multibyte strings
Une chaîne multioctets terminée par un caractère nul (NTMBS), ou « chaîne multioctets », est une séquence d'octets non nuls suivie d'un octet de valeur zéro (le caractère nul de terminaison).
Chaque caractère stocké dans la chaîne peut occuper plus d'un octet. L'encodage utilisé pour représenter les caractères dans une chaîne de caractères multioctets est spécifique à la locale : il peut s'agir d'UTF-8, GB18030, EUC-JP, Shift-JIS, etc. Par exemple, le tableau de caractères { ' \xe4 ' , ' \xbd ' , ' \xa0 ' , ' \xe5 ' , ' \xa5 ' , ' \xbd ' , ' \0 ' } est un NTMBS contenant la chaîne "你好" en encodage multioctet UTF-8 : les trois premiers octets encodent le caractère 你, les trois octets suivants encodent le caractère 好. La même chaîne encodée en GB18030 est le tableau de caractères { ' \xc4 ' , ' \xe3 ' , ' \xba ' , ' \xc3 ' , ' \0 ' } , où chacun des deux caractères est encodé comme une séquence de deux octets.
Dans certains encodages multioctets, toute séquence de caractères multioctets donnée peut représenter différents caractères selon les séquences d'octets précédentes, connues sous le nom de "séquences de changement". De tels encodages sont dits dépendants de l'état : la connaissance de l'état de changement actuel est nécessaire pour interpréter chaque caractère. Un NTMBS n'est valide que s'il commence et se termine dans l'état de changement initial : si une séquence de changement a été utilisée, la séquence de retour correspondante doit être présente avant le caractère nul de terminaison. Des exemples de tels encodages sont le JIS 7 bits, BOCU-1 et SCSU .
Une chaîne de caractères multioctets est compatible en mémoire avec une chaîne d'octets terminée par un caractère nul (NTBS), c'est-à-dire qu'elle peut être stockée, copiée et examinée en utilisant les mêmes mécanismes, à l'exception du calcul du nombre de caractères. Si les paramètres régionaux corrects sont en vigueur, les fonctions d'E/S gèrent également les chaînes multioctets. Les chaînes multioctets peuvent être converties vers et depuis les chaînes larges en utilisant les fonctions membres de std::codecvt , std::wstring_convert , ou les fonctions de conversion dépendantes des paramètres régionaux suivantes :
Table des matières |
Fonctions
Conversions de caractères multioctets/larges |
|
|
Défini dans l'en-tête
<cstdlib>
|
|
|
retourne le nombre d'octets dans le prochain caractère multioctet
(fonction) |
|
|
convertit le prochain caractère multioctet en caractère large
(fonction) |
|
|
convertit un caractère large en sa représentation multioctet
(fonction) |
|
|
convertit une chaîne de caractères multioctets étroits en chaîne large
(fonction) |
|
|
convertit une chaîne large en chaîne de caractères multioctets étroits
(fonction) |
|
|
Défini dans l'en-tête
<cwchar>
|
|
|
retourne le nombre d'octets dans le prochain caractère multioctet, avec état
(fonction) |
|
|
vérifie si l'objet
std::mbstate_t
représente l'état de décalage initial
(fonction) |
|
|
élargit un caractère étroit d'un octet en caractère large, si possible
(fonction) |
|
|
rétrécit un caractère large en caractère étroit d'un octet, si possible
(fonction) |
|
|
convertit le prochain caractère multioctet en caractère large, avec état
(fonction) |
|
|
convertit un caractère large en sa représentation multioctet, avec état
(fonction) |
|
|
convertit une chaîne de caractères multioctets étroits en chaîne large, avec état
(fonction) |
|
|
convertit une chaîne large en chaîne de caractères multioctets étroits, avec état
(fonction) |
|
|
Défini dans l'en-tête
<cuchar>
|
|
|
(C++20)
|
convertit un caractère multioctet étroit en encodage UTF-8
(fonction) |
|
(C++20)
|
convertit une chaîne UTF-8 en encodage multioctet étroit
(fonction) |
|
(C++11)
|
convertit un caractère multioctet étroit en encodage UTF-16
(fonction) |
|
(C++11)
|
convertit un caractère UTF-16 en encodage multioctet étroit
(fonction) |
|
(C++11)
|
convertit un caractère multioctet étroit en encodage UTF-32
(fonction) |
|
(C++11)
|
convertit un caractère UTF-32 en encodage multioctet étroit
(fonction) |
Types
|
Défini dans l'en-tête
<cwchar>
|
|
|
informations d'état de conversion nécessaires pour itérer sur les chaînes de caractères multioctets
(classe) |
|
Macros
|
Défini dans l'en-tête
<climits>
|
|
|
MB_LEN_MAX
|
nombre maximum d'octets dans un caractère multioctet
(constante macro) |
|
Défini dans l'en-tête
<cstdlib>
|
|
|
MB_CUR_MAX
|
nombre maximum d'octets dans un caractère multioctet dans la locale C actuelle
(variable macro) |
|
Défini dans l'en-tête
<cuchar>
|
|
|
__STDC_UTF_16__
(C++11)
|
indique que l'encodage UTF-16 est utilisé par mbrtoc16 et c16rtomb
(constante macro) |
|
__STDC_UTF_32__
(C++11)
|
indique que l'encodage UTF-32 est utilisé par mbrtoc32 et c32rtomb
(constante macro) |
Voir aussi
|
Documentation C
pour
Chaînes multioctets terminées par un caractère nul
|