A C ++ mbrtoc16 () függvénye egy keskeny multibyte karaktert 16 bites karakterábrázolássá alakít át.
Az mbrtoc16 () függvény a fejlécfájlban van meghatározva.
mbrtoc16 () prototípus
size_t mbrtoc16 (char16_t * pc16, const char * s, size_t n, mbstate_t * ps);
Az mbrtoc16 () függvény legfeljebb n sok s bájtos karaktert konvertál az ekvivalens utf-16 karakterévé, és a pc16 által jelzett memóriahelyen tárolja.
Ha s null mutatót jelent, akkor az n és a pc16 értékét figyelmen kívül hagyjuk, és a (z) címre történő hívás egyenértékű az mbrtoc16 értékkel (NULL, "", 1, ps).
Ha az eredményül kapott karakter null, a * ps konverziós állapot a kezdeti eltolási állapotot jelenti.
mbrtoc16 () Paraméterek
- pc16: Mutató a memória helyére az így kapott 16 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.
mbrtoc16 () Visszatérési érték
Az mbrtoc16 () függvény az alábbi eseteknek megfelelő első értéket adja vissza:
- 0, ha az átalakított karakter null karakter.
- a sikeresen 16 bites karakterré konvertált többbájtos karakter bájtjainak száma (legfeljebb n).
- -3, ha a
char16_t
multi-char16_t karakterből következőt (pl. Egy pótpár) most a * pc16-ra í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 * pc16-ra nem írunk semmit.
- -1, ha kódolási hiba lép fel. Ebben az esetben a * pc16-ra nem írunk semmit, az errno beállítása EILSEQ, és a * ps értéke nincs megadva .
Példa: Hogyan működik az mbrtoc16 () függvény?
#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; )
A program futtatásakor a kimenet a következő lesz:
Többbájtos karakterlánc = x Lengt> h = 1 16 bites karakter = 0x0078