C ++ mbrtoc32 () - C ++ standardna knjižnica

Funkcija mbrtoc32 () na C ++ pretvara uski višebajtni znak u 32-bitni prikaz znakova.

Funkcija mbrtoc32 () definirana je u zaglavnoj datoteci.

prototip mbrtoc32 ()

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

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

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

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

mbrtoc32 () Parametri

  • pc32: Pokazivač na memorijsko mjesto za pohranu rezultirajućeg 32-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.

mbrtoc32 () Povratna vrijednost

Funkcija mbrtoc32 () 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 32-bitni znak.
  • -3 ako je sljedeći char32_tiz znaka multi-char32_t (npr. Zamjenski par) sada zapisan na * pc32. 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 * pc32.
  • -1 ako se dogodi pogreška kodiranja. U ovom slučaju ništa nije zapisano na * pc32, errno je postavljeno na EILSEQ, a vrijednost * ps nije navedena.

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

Kada pokrenete program, izlaz će biti:

 Niz od više bajtova = x Duljina = 1 32-bitni znak = 0x00000078

Zanimljivi članci...