C ++ mbrtoc16 () - Biblioteca standard C ++

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_tdintr-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

Articole interesante...