Funcția mbrtoc16 () în C ++ convertește un caracter îngust multibyte într-o reprezentare de 16 biți.
Funcția mbrtoc16 () este definită în fișierul antet.
mbrtoc16 () prototip
size_t mbrtoc16 (char16_t * pc16, const char * s, size_t n, mbstate_t * ps);
Funcția mbrtoc16 () convertește cel mult n caracter multibyte reprezentat de s în caracterul său echivalent utf-16 și îl stochează în locația de memorie indicată de pc16.
Dacă s reprezintă un pointer nul, valorile lui n și pc16 sunt ignorate, iar apelul către este echivalent cu mbrtoc16 (NULL, "", 1, ps).
Dacă caracterul rezultat produs este nul, starea de conversie * ps reprezintă starea inițială de schimbare.
mbrtoc16 () Parametri
- pc16: Pointer către locația memoriei pentru a stoca caracterul rezultat pe 16 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.
mbrtoc16 () Valoare returnată
Funcția mbrtoc16 () 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 16 biți.
- -3 dacă următorul
char16_t
dintr-un caracter multi-char16_t (de exemplu, o pereche surogat) a fost acum scris în * pc16. Î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 * pc16.
- -1 dacă apare o eroare de codificare. În acest caz, nimic nu este scris în * pc16, errno este setat la EILSEQ și valoarea * ps nu este specificată.
Exemplu: Cum funcționează funcția mbrtoc16 ()?
#include #include #include #include using namespace std; int main(void) ( char16_t pc16; char s() = "x" ; mbstate_t ps(); int length; length = mbrtoc16(&pc16, s, MB_CUR_MAX, &ps); if (length < 0) ( perror("mbrtoc16() fails to convert"); exit(-1); ) cout << "Multibyte string = " << s << endl; cout << "Length = " << length << endl; printf ("16-bit character = 0x%04hx", pc16); return 0; )
Când rulați programul, ieșirea va fi:
Șir multibyte = x Lengt> h = 1 caracter pe 16 biți = 0x0078