Namespaces
Variants

mbrtoc8

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

Convertit un caractère multioctet étroit en encodage UTF-8.

Si s n'est pas un pointeur nul, inspecte au plus n octets de la chaîne de caractères multioctets, en commençant par l'octet pointé par s pour déterminer le nombre d'octets nécessaires pour compléter le prochain caractère multioctet (y compris les séquences de changement). Si la fonction détermine que le prochain caractère multioctet dans s est complet et valide, le convertit en UTF-8 et stocke la première unité de code UTF-8 dans * pc8 (si pc8 n'est pas nul).

Si l'encodage UTF-8 du caractère multioctet dans * s consiste en plus d'une unité de code UTF-8, alors après le premier appel à cette fonction, * ps est mis à jour de telle sorte que le prochain appel à mbrtoc8 écrira les unités de code UTF-8 supplémentaires, sans prendre en compte * s .

Si s est un pointeur nul, les valeurs de n et pc8 sont ignorées et l'appel est équivalent à mbrtoc8 ( nullptr, "" , 1 , ps ) .

Si l'unité de code UTF-8 produite est u8 ' \0 ' , l'état de conversion * ps représente l'état de décalage initial.

L'encodage multioctet utilisé par cette fonction est spécifié par la locale C actuellement active.

Table des matières

Paramètres

pc8 - pointeur vers l'emplacement où les unités de code UTF-8 résultantes seront écrites
s - pointeur vers la chaîne de caractères multioctets utilisée comme entrée
n - limite du nombre d'octets dans s pouvant être examinés
ps - pointeur vers l'objet d'état de conversion utilisé lors de l'interprétation de la chaîne multioctet

Valeur de retour

Le premier des éléments suivants qui s'applique :

  • 0 si le caractère converti à partir de s (et stocké dans * pc8 si non nul) était le caractère nul.
  • Le nombre d'octets [ 1 , n ] du caractère multi-octets converti avec succès à partir de s .
  • ( size_t ) - 3 si l'unité de code UTF-8 suivante d'un caractère dont l'encodage consiste en plusieurs unités de code a maintenant été écrite dans * pc8 . Aucun octet n'est traité en entrée dans ce cas.
  • ( size_t ) - 2 si les n octets suivants constituent un caractère multi-octets incomplet, mais jusqu'à présent valide. Rien n'est écrit dans * pc8 .
  • ( size_t ) - 1 si une erreur d'encodage se produit. Rien n'est écrit dans * pc8 , la valeur EILSEQ est stockée dans errno et la valeur de * ps n'est pas spécifiée.

Exemple

Références

  • Norme C23 (ISO/IEC 9899:2024) :
  • 7.30.1.1 La fonction mbrtoc8

Voir aussi

(C23)
convertit une chaîne UTF-8 en encodage multioctet étroit
(fonction)
Documentation C++ pour mbrtoc8