Funkcija mbrtoc16 () C ++ paverčia siaurą daugiabaitį simbolį į 16 bitų simbolių vaizdą.
Funkcija mbrtoc16 () yra apibrėžta antraštės faile.
mbrtoc16 () prototipas
dydis_t mbrtoc16 (char16_t * pc16, const char * s, size_t n, mbstate_t * ps);
Funkcija „mbrtoc16“ () konvertuoja daugiausiai n daugiabaitį simbolį, kurį žymi s, į ekvivalentišką „utf-16“ simbolį ir saugo jį atminties vietoje, nurodytoje pc16.
Jei s reiškia nulinį rodyklę, n ir pc16 reikšmės nepaisomos, o iškvietimas yra lygiavertis mbrtoc16 (NULL, "", 1, ps).
Jei gautas simbolis yra nulinis, konversijos būsena * ps reiškia pradinę poslinkio būseną.
mbrtoc16 () parametrai
- pc16: žymeklis į atminties vietą saugoti gautą 16 bitų simbolį.
- s: žymeklis į daugiabaitį simbolį, kurį reikia konvertuoti.
- n: didžiausias konvertuojamų baitų skaičius s.
- ps: žymeklis į objektą „mbstate_t“, naudojamas aiškinant kelių baitų eilutę.
mbrtoc16 () Grąžinimo vertė
Funkcija mbrtoc16 () grąžina pirmąją iš šių reikšmių, atitinkančių toliau nurodytus atvejus:
- 0, jei konvertuotas simbolis yra nulinis simbolis.
- sėkmingai konvertuoto į 16 bitų simbolį daugiabačio simbolio baitų skaičius (daugiausia n).
- -3, jei kitas
char16_t
iš daugelio char16_t simbolių (pvz., Pakaitinė pora) dabar parašytas * pc16. Šiuo atveju iš įvesties nėra apdorojami jokie baitai. - -2, jei kiti n baitai yra neišsamus, bet kol kas galiojantis daugiabaitis simbolis. Šiuo atveju nieko nerašoma į * pc16.
- -1, jei įvyksta kodavimo klaida. Šiuo atveju nieko nerašoma į * pc16, „errno“ nustatoma į „ EILSEQ“, o * ps reikšmė nenurodyta.
Pavyzdys: Kaip veikia funkcija mbrtoc16 ()?
#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; )
Kai paleisite programą, išvestis bus:
Daugiabaitė eilutė = x Lengt> h = 1 16 bitų simbolis = 0x0078