C ++ mbrtoc16 () - štandardná knižnica C ++

Funkcia mbrtoc16 () v C ++ prevádza úzky viacbajtový znak na 16-bitovú reprezentáciu znakov.

Funkcia mbrtoc16 () je definovaná v hlavičkovom súbore.

mbrtoc16 () prototyp

 size_t mbrtoc16 (char16_t * pc16, const char * s, size_t n, mbstate_t * ps);

Funkcia mbrtoc16 () prevádza najviac n viacbytových znakov predstavovaných s na jej ekvivalentný znak utf-16 a ukladá ich do pamäťového umiestnenia, na ktoré ukazuje pc16.

Ak s predstavuje nulový ukazovateľ, hodnoty n a pc16 sa ignorujú a volanie na je ekvivalentné mbrtoc16 (NULL, "", 1, ps).

Ak je výsledný vyprodukovaný znak nulový, stav konverzie * ps predstavuje počiatočný stav posunu.

Parametre mbrtoc16 ()

  • pc16: Ukazovateľ na umiestnenie v pamäti na uloženie výsledného 16-bitového znaku.
  • s: Ukazovateľ na viacbajtový znak, ktorý sa má previesť.
  • n: Maximálny počet bajtov v s, ktoré sa majú previesť.
  • ps: Ukazovateľ na objekt mbstate_t použitý pri interpretácii viacbytového reťazca.

mbrtoc16 () Vrátená hodnota

Funkcia mbrtoc16 () vráti prvú z nasledujúcich hodnôt, ktorá sa zhoduje s prípadmi uvedenými nižšie:

  • 0, ak je prevedený znak nulový znak.
  • počet bajtov (najviac n) viacbajtového znaku, ktorý bol úspešne prevedený na 16-bitový znak.
  • -3, ak je ďalší char16_tznak zo znaku multi-char16_t (napr. Náhradný pár) teraz zapísaný do * pc16. V tomto prípade sa zo vstupu nespracúvajú žiadne bajty.
  • -2 ak ďalších n bajtov predstavuje neúplný, ale zatiaľ platný viacbajtový znak. V tomto prípade nie je nič napísané do * pc16.
  • -1, ak dôjde k chybe kódovania. V tomto prípade nie je nič zapísané do * pc16, errno je nastavené na EILSEQ a hodnota * ps je nešpecifikovaná.

Príklad: Ako funguje funkcia 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; )

Po spustení programu bude výstup:

 Viacbajtový reťazec = x Lengt> h = 1 16-bitový znak = 0x0078

Zaujímavé články...