Funkcija mbrtoc32 () C ++ paverčia siaurą daugiabaitį simbolį į 32 bitų simbolių vaizdą.
Funkcija mbrtoc32 () yra apibrėžta antraštės faile.
mbrtoc32 () prototipas
size_t mbrtoc32 (char32_t * pc32, const char * s, size_t n, mbstate_t * ps);
Funkcija „mbrtoc32“ () konvertuoja daugiausiai n daugiabaitį simbolį, kurį žymi s, į ekvivalentišką „utf-32“ simbolį ir saugo jį atminties vietoje, į kurią rodo pc32.
Jei s reiškia nulinį rodyklę, n ir pc32 reikšmės nepaisomos, o iškvietimas yra lygiavertis mbrtoc32(NULL, "", 1, ps)
.
Jei gautas simbolis yra nulinis, konversijos būsena * ps reiškia pradinę poslinkio būseną.
mbrtoc32 () parametrai
- pc32: žymeklis į atminties vietą saugoti gautą 32 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ę.
mbrtoc32 () Grąžinimo vertė
Funkcija „mbrtoc32“ () pateikia pirmąją iš šių reikšmių, atitinkančių toliau nurodytus atvejus:
- 0, jei konvertuotas simbolis yra nulinis simbolis.
- sėkmingai konvertuoto į 32 bitų simbolį daugiabačio simbolio baitų skaičius (daugiausia n).
- -3, jei kitas
char32_t
iš daugelio char32_t simbolių (pvz., Pakaitinė pora) dabar parašytas * pc32. Š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 į * pc32.
- -1, jei įvyksta kodavimo klaida. Šiuo atveju nieko nerašoma į * pc32, „errno“ nustatoma į „ EILSEQ“, o * ps reikšmė nenurodyta.
Pavyzdys: Kaip veikia „mbrtoc32“ () funkcija?
#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; )
Kai paleisite programą, išvestis bus:
Daugiabaitė eilutė = x Ilgis = 1 32 bitų simbolis = 0x00000078