C ++ mbrtoc32 () - C ++ szabványos könyvtár

A C ++ mbrtoc32 () függvénye egy keskeny multibyte karaktert 32 bites karakterábrázolássá alakít át.

Az mbrtoc32 () függvény a fejlécfájlban van meghatározva.

mbrtoc32 () prototípus

 size_t mbrtoc32 (char32_t * pc32, const char * s, size_t n, mbstate_t * ps);

Az mbrtoc32 () függvény legfeljebb n multi bájtos karaktert alakít, amelyet s jelöl, ekvivalens utf-32 karakterévé konvertál, és a pc32 által jelzett memóriahelyen tárolja.

Ha s null mutatót jelent, akkor az n és a pc32 értékei figyelmen kívül maradnak, és a (z) címre történő hívás ekvivalens mbrtoc32(NULL, "", 1, ps).

Ha az eredményül kapott karakter null, a * ps konverziós állapot a kezdeti eltolási állapotot jelenti.

mbrtoc32 () Paraméterek

  • pc32: Mutató a memória helyére a kapott 32 bites karakter tárolásához.
  • s: Az átalakítandó multibyte karakter mutatója.
  • n: Az átalakítandó bájtok maximális száma másodpercben.
  • ps: Egy mbstate_t objektum mutatója, amelyet a többbájtos karakterlánc értelmezéséhez használnak.

mbrtoc32 () Visszatérési érték

Az mbrtoc32 () függvény az alábbi eseteknek megfelelő első értéket adja vissza:

  • 0, ha az átalakított karakter null karakter.
  • a sikeresen 32 bites karakterré konvertált többbájtos karakter bájtjainak száma (legfeljebb n).
  • -3, ha a char32_tmulti-char32_t karakterből következőt (pl. Egy pótpár) most a * pc32-re írtuk. Ebben az esetben a bemenetről nem kerülnek feldolgozásra bájtok.
  • -2, ha a következő n bájt hiányos, de eddig érvényes többbájtos karaktert alkot. Ebben az esetben a * pc32-re nem írunk semmit.
  • -1, ha kódolási hiba lép fel. Ebben az esetben nem írunk semmit a * pc32-re, az errno beállítása EILSEQ, és a * ps értéke nincs megadva .

Példa: Hogyan működik az mbrtoc32 () függvény?

 #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; )

A program futtatásakor a kimenet a következő lesz:

 Többbájtos karakterlánc = x Hossz = 1 32 bites karakter = 0x00000078

érdekes cikkek...