c16rtomb, c32rtomb

Konvertieren Sie ein UTF-16- oder UTF-32-breites Zeichen in ein UTF-8-Multibyte-Zeichen.

Syntax

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

Parameter

mbchar
Zeigen Sie auf ein Array, um das konvertierte UTF-8-Multibyte-Zeichen zu speichern.

wchar
Ein zu konvertierendes Breitzeichen.

state
Ein Zeiger auf ein mbstate_t -Objekt.

Rückgabewert

Die Anzahl der im Arrayobjekt mbchargespeicherten Bytes, einschließlich eventueller UMSCHALT-Sequenzen. Wenn wchar es sich nicht um ein gültiges breites Zeichen handelt, wird der Wert (size_t)(-1) zurückgegeben, errno auf EILSEQund der Wert ist state nicht angegeben.

Hinweise

Die c16rtomb Funktion konvertiert das UTF-16 LE-Zeichen wchar in die entsprechende UTF-8 Multibyte schmale Zeichensequenz. Wenn mbchar es sich nicht um einen Nullzeiger handelt, speichert die Funktion die konvertierte Sequenz im Arrayobjekt, auf das mbcharverwiesen wird. Bis zu MB_CUR_MAX Bytes werden in mbchargespeichert, und state wird auf den resultierenden Multibyte-UMSCHALT-Status festgelegt.

Wenn wchar es sich um ein nullweites Zeichen handelt, wird bei Bedarf eine Sequenz gespeichert, die zum Wiederherstellen des anfänglichen Schichtzustands erforderlich ist, gefolgt von dem Nullzeichen. state wird auf den anfänglichen Konvertierungszustand festgelegt. Die c32rtomb -Funktion ist identisch, konvertiert aber ein UTF-32-Zeichen.

Wenn mbchar ein Nullzeiger ist, ist das Verhalten gleichbedeutend mit einem Aufruf der Funktion, die mbchar durch einen internen Puffer und wchardurch ein breites NULL-Zeichen ersetzt.

Das state -Konvertierungsstatusobjekt ermöglicht Ihnen, aufeinander folgende Aufrufe dieser Funktion und anderer erneut startbarer Funktionen vorzunehmen, bei denen der UMSCHALT-Status der Multibyteausgabezeichen erhalten bleibt. Die Ergebnisse sind nicht definiert, wenn Sie die Verwendung von neustartbaren und nicht neu gestarteten Funktionen kombinieren.

Um UTF-16 Zeichen in Nicht-UTF-8-Multibyte-Zeichen zu konvertieren, verwenden Sie die Funktionen ,_wcstombs_l wcstombs_s oder _wcstombs_s_l.wcstombs

Anforderungen

Routine Erforderlicher Header
c16rtomb, c32rtomb C, C++: <uchar.h>

Informationen zur Kompatibilität finden Sie unter Kompatibilität.

Siehe auch

Datenkonvertierung
Gebietsschema
Interpretation von Multibytezeichensequenzen
mbrtoc16, mbrtoc32
wcrtomb
wcrtomb_s