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_t
od 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