C ++ mbrtoc32 () - Bibliothèque standard C ++

La fonction mbrtoc32 () en C ++ convertit un caractère multioctet étroit en une représentation de caractères 32 bits.

La fonction mbrtoc32 () est définie dans le fichier d'en-tête.

prototype mbrtoc32 ()

 size_t mbrtoc32 (char32_t * pc32, const char * s, size_t n, mbstate_t * ps);

La fonction mbrtoc32 () convertit au plus n caractère multi-octets représenté par s en son caractère utf-32 équivalent et le stocke dans l'emplacement mémoire pointé par pc32.

Si s représente un pointeur nul, les valeurs de n et pc32 sont ignorées et l'appel à est équivalent à mbrtoc32(NULL, "", 1, ps).

Si le caractère résultant produit est nul, l'état de conversion * ps représente l'état de décalage initial.

Paramètres de mbrtoc32 ()

  • pc32: pointeur vers l'emplacement mémoire pour stocker le caractère 32 bits résultant.
  • s: pointeur vers le caractère multi-octets à convertir.
  • n: nombre maximum d'octets en s à convertir.
  • ps: Un pointeur vers un objet mbstate_t utilisé lors de l'interprétation de la chaîne multi-octets.

mbrtoc32 () Valeur de retour

La fonction mbrtoc32 () renvoie la première des valeurs suivantes qui correspond aux cas ci-dessous:

  • 0 si le caractère converti est un caractère nul.
  • le nombre d'octets (au plus n) du caractère multi-octets qui a été converti avec succès en caractère 32 bits.
  • -3 si le suivant char32_td'un caractère multi-char32_t (par exemple une paire de substitution) a maintenant été écrit dans * pc32. Aucun octet n'est traité à partir de l'entrée dans ce cas.
  • -2 si les n octets suivants constituent un caractère multi-octets incomplet, mais jusqu'à présent valide. Dans ce cas, rien n'est écrit dans * pc32.
  • -1 si une erreur de codage se produit. Dans ce cas, rien n'est écrit dans * pc32, errno est défini sur EILSEQ et la valeur de * ps n'est pas spécifiée.

Exemple: Comment fonctionne la fonction mbrtoc32 ()?

 #include #include #include #include using namespace std; int main(void) ( char32_t pc32; char s() = "x" ; mbstate_t ps; int length; length = mbrtoc32(&pc32, s, MB_CUR_MAX, &ps); if (length < 0) ( perror("mbrtoc32() fails to convert"); exit(-1); ) cout << "Multibyte string = " << s << endl; cout << "Length = " << length << endl; printf ("32-bit character = 0x%08hx", pc32); return 0; )

Lorsque vous exécutez le programme, la sortie sera:

 Chaîne multi-octets = x Longueur = 1 caractère 32 bits = 0x00000078

Articles intéressants...