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 mbchar
gespeicherten 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 EILSEQ
und 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 mbchar
verwiesen wird. Bis zu MB_CUR_MAX
Bytes werden in mbchar
gespeichert, 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 wchar
durch 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