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

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

Įdomios straipsniai...