C ++ mbrtoc32 () - C ++ standartinė biblioteka

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_tiš 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

Įdomios straipsniai...