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_t
dintr-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