Funktsioon mbrtoc32 () funktsioonis C ++ teisendab kitsa mitmebaidise märgi 32-bitiseks tähemärgiks.
Funktsioon mbrtoc32 () on määratletud päisefailis.
mbrtoc32 () prototüüp
size_t mbrtoc32 (char32_t * pc32, const char * s, size_t n, mbstate_t * ps);
Funktsioon mbrtoc32 () teisendab maksimaalselt n s-ga tähistatud mitmebaidist tähemärki samaväärseks utf-32 tähemärgiks ja salvestab selle mäluasendisse, millele osutab pc32.
Kui s tähistab nullkursorit, ignoreeritakse n ja pc32 väärtusi ja kõne aadressile on samaväärne mbrtoc32(NULL, "", 1, ps)
.
Kui saadud tähemärk on null, tähistab teisenduse olek * ps algset nihkeolekut.
mbrtoc32 () parameetrid
- pc32: kursor mälu asukohta, et salvestada saadud 32-bitine märk.
- s: kursor mitmebaidise tähe teisendamiseks.
- n: teisendatavate baitide maksimaalne arv sekundites.
- ps: osuti mbstate_t objektile, mida kasutatakse mitmebaidise stringi tõlgendamisel.
mbrtoc32 () Tagastusväärtus
Funktsioon mbrtoc32 () tagastab esimese järgmise väärtuse, mis vastab järgmistele juhtumitele:
- 0, kui teisendatud märk on nullmärk.
- edukalt 32-bitiseks tähiseks muudetud mitmebaidise märgi baitide arv (maksimaalselt n).
- -3, kui
char32_t
multi-char32_t sümbolist järgmine (nt asenduspaar) on nüüd kirjutatud * pc32. Sellisel juhul ei töödelda sisendist ühtegi baiti. - -2, kui järgmised n baiti moodustavad mittetäieliku, kuid seni kehtiva mitmebaidise tähemärgi. Sel juhul ei kirjutata * pc32-le midagi.
- -1, kui ilmneb kodeerimisviga. Sel juhul ei kirjutata * pc32-le midagi, errno väärtuseks määratakse EILSEQ ja * ps väärtus pole täpsustatud.
Näide: Kuidas funktsioon mbrtoc32 () töötab?
#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; )
Programmi käivitamisel on väljund järgmine:
Mitmebaidine string = x Pikkus = 1 32-bitine märk = 0x00000078