Namespaces
Variants

c8rtomb

From cppreference.net
Défini dans l'en-tête <uchar.h>
size_t c8rtomb ( char * restrict s, char8_t c8, mbstate_t * restrict ps ) ;
(depuis C23)

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 à 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 , ( size_t ) - 1 est retourné, 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

Références

  • Norme C23 (ISO/IEC 9899:2024):
  • 7.30.1.2 La fonction c8rtomb

Voir aussi

(C23)
convertit un caractère multioctet étroit en encodage UTF-8
(fonction)
Documentation C++ pour c8rtomb