c16rtomb
, c32rtomb
Převede znak UTF-16 nebo UTF-32 na vícebajtový znak UTF-8.
Syntaxe
size_t c16rtomb(
char *mbchar,
char16_t wchar,
mbstate_t *state
);
size_t c32rtomb(
char *mbchar,
char32_t wchar,
mbstate_t *state
);
Parametry
mbchar
Ukazatel na pole pro uložení převedeného vícebajtového znaku UTF-8
wchar
Široký znak, který chcete převést.
state
Ukazatel na mbstate_t
objekt.
Vrácená hodnota
Počet bajtů uložených v objektu mbchar
pole , včetně všech sekvencí posunu. Pokud wchar
není platný široký znak, vrátí errno
se hodnota (size_t
)(-1), nastaví se na EILSEQ
hodnotu a hodnota state
není zadaná.
Poznámky
Funkce c16rtomb
převede znak wchar
UTF-16 LE na ekvivalentní vícebajtovou zúženou sekvenci znaků UTF-8. Pokud mbchar
není ukazatel null, funkce uloží převedenou sekvenci v objektu pole, na který mbchar
odkazuje . MB_CUR_MAX
Až bajty jsou uloženy v mbchar
a state
jsou nastaveny na výsledný stav vícebajtového posunu.
Pokud wchar
je široký znak null, sekvence potřebná k obnovení počátečního stavu směny je v případě potřeby uložena a znak null. state
je nastaven na počáteční stav převodu. Funkce c32rtomb
je identická, ale převede znak UTF-32.
Pokud mbchar
je ukazatel null, chování je ekvivalentní volání funkce, která nahrazuje vnitřní vyrovnávací paměť mbchar
a široký znak null znak pro wchar
.
state
Objekt stavu převodu umožňuje provádět následná volání této funkce a další restartovatelné funkce, které udržují stav posunu vícebajtových výstupních znaků. Výsledky nejsou definovány při kombinaci použití restartovatelných a nerestartovatelných funkcí.
Chcete-li převést UTF-16 znaků na vícebajtové znaky jiné než UTF-8, použijte funkce ,_wcstombs_l
, wcstombs_s nebo _wcstombs_s_l.wcstombs
Požadavky
Rutina | Požadovaný hlavičkový soubor |
---|---|
c16rtomb , c32rtomb |
C, C++: <uchar.h> |
Informace o kompatibilitě najdete v tématu Kompatibilita.
Viz také
Konverze dat
Národní prostředí
Interpretace vícebajtových sekvencí znaků
mbrtoc16
, mbrtoc32
wcrtomb
wcrtomb_s