Namespaces
Variants

std:: mbrtoc8

From cppreference.net
Défini dans l'en-tête <cuchar>
std:: size_t mbrtoc8 ( char8_t * pc8,

const char * s,
std:: size_t n,

std:: mbstate_t * ps ) ;
(depuis C++20)

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 toute séquence 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 à std :: 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 en 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 .
  • static_cast < std:: 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é depuis l'entrée dans ce cas.
  • static_cast < std:: size_t > ( - 2 ) si les n octets suivants constituent un caractère multi-octets incomplet, mais jusqu'ici valide. Rien n'est écrit dans * pc8 .
  • static_cast < std:: 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

Voir aussi

(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)
Documentation C pour mbrtoc8