C ++ mbrtoc16 () - standardní knihovna C ++

Funkce mbrtoc16 () v C ++ převádí úzký vícebajtový znak na 16bitovou reprezentaci znaků.

Funkce mbrtoc16 () je definována v hlavičkovém souboru.

prototyp mbrtoc16 ()

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

Funkce mbrtoc16 () převádí maximálně n vícebajtových znaků představovaných s na její ekvivalentní znak utf-16 a ukládá je do paměťového umístění, na které ukazuje pc16.

Pokud s představuje nulový ukazatel, hodnoty n a pc16 jsou ignorovány a volání je ekvivalentní mbrtoc16 (NULL, "", 1, ps).

Pokud je výsledný vytvořený znak null, stav převodu * ps představuje počáteční stav posunu.

Parametry mbrtoc16 ()

  • pc16: Ukazatel na místo v paměti pro uložení výsledného 16bitového znaku.
  • s: Ukazatel na vícebajtový znak, který se má převést.
  • n: Maximální počet bajtů v s, které se mají převést.
  • ps: Ukazatel na objekt mbstate_t použitý při interpretaci vícebajtového řetězce.

mbrtoc16 () Vrátit hodnotu

Funkce mbrtoc16 () vrací první z následujících hodnot, která odpovídá níže uvedeným případům:

  • 0, pokud je převedený znak nulovým znakem.
  • počet bajtů (maximálně n) vícebajtového znaku, který byl úspěšně převeden na 16bitový znak.
  • -3, pokud byl další char16_tznak ze znaku multi-char16_t (např. Náhradní pár) nyní zapsán do * pc16. V tomto případě se ze vstupu nezpracovávají žádné bajty.
  • -2 pokud následujících n bajtů představuje neúplný, ale dosud platný vícebajtový znak. V tomto případě není nic zapsáno do * pc16.
  • -1, pokud dojde k chybě kódování. V tomto případě není nic zapsáno do * pc16, errno je nastaveno na EILSEQ a hodnota * ps je nespecifikována.

Příklad: Jak funguje funkce 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; )

Když spustíte program, výstup bude:

 Vícebajtový řetězec = x Lengt> h = 1 16bitový znak = 0x0078

Zajímavé články...