Funktsioon mbrtoc16 () funktsioonis C ++ teisendab kitsa mitmebaidise märgi 16-bitiseks tähemärgiks.
Funktsioon mbrtoc16 () on määratletud päisefailis.
mbrtoc16 () prototüüp
size_t mbrtoc16 (char16_t * pc16, const char * s, size_t n, mbstate_t * ps);
Funktsioon mbrtoc16 () teisendab maksimaalselt n s-ga tähistatud mitmebaidist tähemärki samaväärseks utf-16 tähemärgiks ja salvestab selle mäluasendisse, millele osutab pc16.
Kui s tähistab nullkursorit, ignoreeritakse n ja pc16 väärtusi ja kutse aadressile on samaväärne mbrtoc16-ga (NULL, "", 1, ps).
Kui saadud tähemärk on null, tähistab teisenduse olek * ps algset nihkeolekut.
mbrtoc16 () parameetrid
- pc16: kursor mälukohta, et salvestada saadud 16-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.
mbrtoc16 () Tagastusväärtus
Funktsioon mbrtoc16 () tagastab esimese järgmise väärtuse, mis vastab järgmistele juhtumitele:
- 0, kui teisendatud märk on nullmärk.
- edukalt 16-bitiseks teisendatud mitmebaidise märgi baitide arv (maksimaalselt n).
- -3, kui
char16_t
multi-char16_t tähemärgist järgmine (nt asenduspaar) on nüüd kirjutatud * pc16. 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 * pc16 midagi.
- -1, kui ilmneb kodeerimisviga. Sel juhul ei kirjutata midagi arvutisse * pc16, errno väärtuseks määratakse EILSEQ ja * ps väärtus pole täpsustatud.
Näide: Kuidas funktsioon mbrtoc16 () töötab?
#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; )
Programmi käivitamisel on väljund järgmine:
Mitmebaidine string = x Lengt> h = 1 16-bitine märk = 0x0078