C ++ mbrtoc32 () - Biblioteca standard C ++

Funcția mbrtoc32 () în C ++ convertește un caracter îngust multibyte într-o reprezentare de 32 de biți.

Funcția mbrtoc32 () este definită în fișierul antet.

mbrtoc32 () prototip

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

Funcția mbrtoc32 () convertește cel mult n caracter multibyte reprezentat de s în caracterul său echivalent utf-32 și îl stochează în locația de memorie indicată de pc32.

Dacă s reprezintă un indicator nul, valorile lui n și pc32 sunt ignorate, iar apelul către este echivalent cu mbrtoc32(NULL, "", 1, ps).

Dacă caracterul rezultat produs este nul, starea de conversie * ps reprezintă starea inițială de schimbare.

mbrtoc32 () Parametri

  • pc32: Pointer către locația de memorie pentru a stoca caracterul rezultat pe 32 de biți.
  • s: Pointer către caracterul multibyte de convertit.
  • n: numărul maxim de octeți în s de convertit.
  • ps: Un pointer către un obiect mbstate_t utilizat la interpretarea șirului multibyte.

mbrtoc32 () Valoare returnată

Funcția mbrtoc32 () returnează prima dintre următoarele valori care se potrivește cu cazurile de mai jos:

  • 0 dacă caracterul convertit este un caracter nul.
  • numărul de octeți (cel mult n) al caracterului multibyte care a fost convertit cu succes în caracter de 32 biți.
  • -3 dacă următorul char32_tdintr-un caracter multi-char32_t (de exemplu, o pereche surogat) a fost acum scris în * pc32. În acest caz nu sunt procesate octeți de la intrare.
  • -2 dacă următorii n octeți constituie un caracter incomplet, dar până acum valid, multibyte. În acest caz, nimic nu este scris în * pc32.
  • -1 dacă apare o eroare de codificare. În acest caz, nimic nu este scris în * pc32, errno este setat la EILSEQ și valoarea * ps nu este specificată.

Exemplu: Cum funcționează funcția 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; )

Când rulați programul, ieșirea va fi:

 Șir multibyte = x Lungime = 1 caracter pe 32 de biți = 0x00000078

Articole interesante...