Share via


c16rtomb, c32rtomb

Convertissez un caractère large UTF-16 ou UTF-32 en caractère multioctet UTF-8.

Syntaxe

size_t c16rtomb(
    char *mbchar,
    char16_t wchar,
    mbstate_t *state
);
size_t c32rtomb(
    char *mbchar,
    char32_t wchar,
    mbstate_t *state
);

Paramètres

mbchar
Pointeur vers un tableau pour stocker le caractère multioctet UTF-8 converti.

wchar
Caractère large à convertir.

state
Pointeur vers un objet mbstate_t .

Valeur retournée

Nombre d’octets stockés dans un objet tableau mbchar, y compris les séquences de décalage. Si wchar ce n’est pas un caractère large valide, la valeur (size_t-1) est retournée, errno est définie EILSEQsur , et la valeur de celle-ci state n’est pas spécifiée.

Notes

La c16rtomb fonction convertit le caractère wchar UTF-16 LE en séquence de caractères étroites multioctets UTF-8 équivalente. Si mbchar ce n’est pas un pointeur Null, la fonction stocke la séquence convertie dans l’objet tableau pointé par mbchar. Jusqu’à MB_CUR_MAX octets sont stockés dans mbchar, et state prend comme valeur l’état du décalage multioctet qui en résulte.

S’il wchar s’agit d’un caractère large Null, une séquence requise pour restaurer l’état de décalage initial est stockée, si nécessaire, suivie du caractère Null. state est défini sur l’état de conversion initial. La fonction c32rtomb est identique, mais elle convertit un caractère UTF-32.

Si mbchar est un pointeur null, le comportement équivaut à un appel à la fonction qui remplace mbchar par une mémoire tampon interne et wcharpar un caractère null large.

L’objet d’état de conversion state vous permet d’effectuer des appels ultérieurs à cette fonction et à d’autres fonctions redémarrables qui tiennent à jour l’état du décalage des caractères multioctets de sortie. Les résultats ne sont pas définis lorsque vous mélangez l’utilisation de fonctions redémarrées et non redémarrées.

Pour convertir des caractères UTF-16 en caractères multioctets non UTF-8, utilisez les wcstombsfonctions , wcstombs_s_wcstombs_l ou _wcstombs_s_l.

Spécifications

Routine En-tête requis
c16rtomb, c32rtomb C, C++ : <uchar.h>

Pour plus d’informations sur la compatibilité, consultez Compatibilité.

Voir aussi

Conversion de données
Paramètres régionaux
Interprétation des séquences de caractères multioctets
mbrtoc16, mbrtoc32
wcrtomb
wcrtomb_s