std:: c8rtomb
|
Défini dans l'en-tête
<cuchar>
|
||
|
std::
size_t
c8rtomb
(
char
*
s, char8_t c8,
std::
mbstate_t
*
ps
)
;
|
(depuis C++20) | |
Convertit un point de code unique de UTF-8 en une représentation de caractère multioctet étroit.
Si s n'est pas un pointeur nul et c8 est la dernière unité de code dans un codage UTF-8 valide d'un point de code, la fonction détermine le nombre d'octets nécessaires pour stocker la représentation du caractère multi-octets de ce point de code (en incluant toute séquence de changement, et en prenant en compte l'état actuel de conversion multi-octets * ps ), et stocke la représentation du caractère multi-octets dans le tableau de caractères dont le premier élément est pointé par s , mettant à jour * ps si nécessaire. Au maximum MB_CUR_MAX octets peuvent être écrits par cette fonction.
Si c8 n'est pas l'unité de code UTF-8 finale dans une représentation d'un point de code, la fonction n'écrit pas dans le tableau pointé par s , seul * ps est mis à jour.
Si
s
est un pointeur nul, l'appel est équivalent à
std
::
c8rtomb
(
buf, u8
'
\0
'
, ps
)
pour un tampon interne
buf
.
Si c8 est le caractère nul u8 ' \0 ' , un octet nul est stocké, précédé de toute séquence de changement nécessaire pour restaurer l'état de changement initial et le paramètre d'état de conversion * ps est mis à jour pour représenter l'état de changement initial.
L'encodage multioctet utilisé par cette fonction est spécifié par la locale C actuellement active.
Table des matières |
Paramètres
| s | - | pointeur vers un tableau de caractères étroits où le caractère multi-octets sera stocké |
| c8 | - | l'unité de code UTF-8 à convertir |
| ps | - | pointeur vers l'objet d'état de conversion utilisé lors de l'interprétation de la chaîne multi-octets |
Valeur de retour
Le nombre d'octets stockés dans l'objet tableau (incluant toute séquence de décalage). Ceci peut être zéro lorsque c8 n'est pas l'unité de code finale dans la représentation UTF-8 d'un point de code.
Si c8 est invalide (ne contribue pas à une séquence de char8_t correspondant à un caractère multioctet valide), la valeur de la macro EILSEQ est stockée dans errno , static_cast < std:: size_t > ( - 1 ) est retournée, et l'état de conversion est non spécifié.
Notes
Les appels à
c8rtomb
avec un argument pointeur nul pour
s
peuvent introduire une course aux données avec d'autres appels à
c8rtomb
avec un argument pointeur nul pour
s
.
Exemple
|
Cette section est incomplète
Raison : aucun exemple |
Voir aussi
|
(C++20)
|
convertit un caractère multioctet étroit en encodage UTF-8
(fonction) |
|
(C++11)
|
convertit un caractère UTF-16 en encodage multioctet étroit
(fonction) |
|
Documentation C
pour
c8rtomb
|
|