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

Funkcija mbrtoc32 () v jeziku C ++ pretvori ozek večbajtni znak v 32-bitno predstavitev znakov.

Funkcija mbrtoc32 () je definirana v datoteki glave.

prototip mbrtoc32 ()

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

Funkcija mbrtoc32 () pretvori največ n večbajtnih znakov, ki jih predstavlja s, v enakovreden znak utf-32 in jih shrani v pomnilniško mesto, na katerega kaže pc32.

Če s predstavlja ničelni kazalec, sta vrednosti n in pc32 prezrta, klic na pa enakovreden mbrtoc32(NULL, "", 1, ps).

Če je nastali znak nič, stanje pretvorbe * ps predstavlja začetno stanje premika.

mbrtoc32 () Parametri

  • pc32: Kazalec na mesto pomnilnika za shranjevanje nastalega 32-bitnega znaka.
  • s: Kazalec na večbajtni znak za pretvorbo.
  • n: največje število bajtov v s za pretvorbo.
  • ps: Kazalec na objekt mbstate_t, ki se uporablja pri interpretaciji večbajtnega niza.

mbrtoc32 () Vrnjena vrednost

Funkcija mbrtoc32 () vrne prvo od naslednjih vrednosti, ki se ujema s spodnjimi primeri:

  • 0, če je pretvorjeni znak ničen.
  • število bajtov (največ n) večbajtnega znaka, ki je bil uspešno pretvorjen v 32-bitni znak.
  • -3, če je naslednji char32_tod znaka multi-char32_t (npr. Nadomestni par) zdaj zapisan v * pc32. V tem primeru se od vnosa ne obdela noben bajt.
  • -2, če naslednjih n bajtov predstavlja nepopoln, a zaenkrat veljaven večbajtni znak. V tem primeru na * pc32 ni zapisano nič.
  • -1, če pride do napake pri kodiranju. V tem primeru v * pc32 ni zapisano nič, errno je nastavljeno na EILSEQ in vrednost * ps ni določena.

Primer: Kako deluje 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; )

Ko zaženete program, bo rezultat:

 Večbajtni niz = x dolžina = 1 32-bitni znak = 0x00000078

Zanimive Članki...