Udostępnij przez


c16rtomb, c32rtomb

Przekonwertuj znak UTF-16 lub UTF-32 na znak wielobajtowy UTF-8.

Składnia

size_t c16rtomb(
    char *mbchar,
    char16_t wchar,
    mbstate_t *state
);
size_t c32rtomb(
    char *mbchar,
    char32_t wchar,
    mbstate_t *state
);

Parametry

mbchar
Wskaźnik do tablicy do przechowywania przekonwertowanego znaku WIELObajtowego UTF-8.

wchar
Szeroki znak do konwersji.

state
Wskaźnik do mbstate_t obiektu.

Wartość zwracana

Liczba bajtów przechowywanych w obiekcie mbchartablicy, w tym wszelkie sekwencje przesunięcia. Jeśli wchar nie jest prawidłowym znakiem szerokim, zwracana errno jest wartość (size_t)(-1), jest ustawiona na EILSEQ, a wartość state jest nieokreślona.

Uwagi

Funkcja c16rtomb konwertuje znak wchar UTF-16 LE na równoważną sekwencję znaków wielobajtowych UTF-8. Jeśli mbchar nie jest wskaźnikiem o wartości null, funkcja przechowuje przekonwertowaną sekwencję w obiekcie tablicy wskazywanym przez mbcharwartość . MB_CUR_MAX Maksymalnie bajty są przechowywane w mbcharelemecie i state są ustawione na wynikowy stan przesunięcia wielobajtowego.

Jeśli wchar jest znakiem o szerokości null, jest przechowywana sekwencja wymagana do przywrócenia stanu początkowego przesunięcia, w razie potrzeby, a następnie znak null. state jest ustawiona na początkowy stan konwersji. Funkcja jest identyczna c32rtomb , ale konwertuje znak UTF-32.

Jeśli mbchar jest wskaźnikiem o wartości null, zachowanie jest równoważne wywołaniu funkcji, która zastępuje wewnętrzny bufor mbchar i szeroki znak null dla wchar.

state Obiekt stanu konwersji umożliwia wykonywanie kolejnych wywołań tej funkcji i innych funkcji z możliwością ponownego uruchomienia, które utrzymują stan zmiany znaków wyjściowych wielobajtowych. Wyniki są niezdefiniowane, gdy mieszasz użycie funkcji możliwych do ponownego uruchomienia i niemożliwych do ponownego uruchomienia.

Aby przekonwertować znaki UTF-16 na znaki inne niż UTF-8, użyj funkcji ,_wcstombs_l wcstombs_s lub _wcstombs_s_l.wcstombs

Wymagania

Procedura Wymagany nagłówek
c16rtomb, c32rtomb C, C++: <uchar.h>

Aby uzyskać informacje o zgodności, zobacz Zgodność.

Zobacz też

Konwersja danych
ustawienia regionalne
Interpretacja sekwencji znaków wielobajtowych
mbrtoc16, mbrtoc32
wcrtomb
wcrtomb_s