C ++ mbrtoc16 () - C ++ standardna biblioteka

Funkcija mbrtoc16 () u C ++ pretvara uski višebajtni znak u 16-bitni prikaz znakova.

Funkcija mbrtoc16 () definirana je u zaglavnoj datoteci.

prototip mbrtoc16 ()

 size_t mbrtoc16 (char16_t * pc16, const char * s, size_t n, mbstate_t * ps);

Funkcija mbrtoc16 () pretvara najviše n višebajtnih znakova predstavljenih s u ekvivalentni utf-16 znak i pohranjuje ih na memorijsko mjesto na koje ukazuje pc16.

Ako s predstavlja null pokazivač, vrijednosti n i pc16 se zanemaruju, a poziv na ekvivalentan je mbrtoc16 (NULL, "", 1, ps).

Ako je rezultirajući proizvedeni znak nula, stanje pretvorbe * ps predstavlja početno stanje pomaka.

mbrtoc16 () Parametri

  • pc16: Pokazivač na memorijsko mjesto za pohranu rezultirajućeg 16-bitnog znaka.
  • s: Pokazivač na višebajtni znak za pretvorbu.
  • n: Maksimalan broj bajtova u s za pretvorbu.
  • ps: Pokazivač na objekt mbstate_t koji se koristi za tumačenje višebajtnog niza.

mbrtoc16 () Povratna vrijednost

Funkcija mbrtoc16 () vraća prvu od sljedećih vrijednosti koja se podudara sa donjim slučajevima:

  • 0 ako je pretvoreni znak nulti znak.
  • broj bajtova (najviše n) višebajtnog znaka koji je uspješno pretvoren u 16-bitni znak.
  • -3 ako je sljedeći char16_tiz znaka multi-char16_t (npr. Zamjenski par) sada zapisan na * pc16. U ovom se slučaju bajtovi ne obrađuju od unosa.
  • -2 ako sljedećih n bajtova čine nepotpuni, ali zasad valjani, višebajtni znak. U ovom slučaju ništa nije zapisano na * pc16.
  • -1 ako se dogodi pogreška kodiranja. U ovom slučaju ništa nije zapisano na * pc16, errno je postavljeno na EILSEQ, a vrijednost * ps je neodređena.

Primjer: Kako funkcionira funkcija 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; )

Kada pokrenete program, izlaz će biti:

 Niz od više bajtova = x Duljina> h = 1 16-bitni znak = 0x0078

Zanimljivi članci...