wctomb_s
, _wctomb_s_l
Konvertiert ein Breitzeichen in das entsprechende Multibytezeichen. Eine Version von wctomb
, _wctomb_l
mit Sicherheitsverbesserungen, wie in den Sicherheitsfeatures in der CRT beschrieben.
Syntax
errno_t wctomb_s(
int *pRetValue,
char *mbchar,
size_t sizeInBytes,
wchar_t wchar
);
errno_t _wctomb_s_l(
int *pRetValue,
char *mbchar,
size_t sizeInBytes,
wchar_t wchar,
_locale_t locale
);
Parameter
pRetValue
Die Anzahl von Bytes oder ein Code, der das Ergebnis angibt.
mbchar
Die Adresse eines Multibytezeichens.
sizeInBytes
Größe des mbchar
-Puffers.
wchar
Das breite Zeichen, das konvertiert werden soll.
locale
Das zu verwendende Gebietsschema.
Rückgabewert
Null, wenn erfolgreich, Fehlercode bei Fehler.
Fehlerbedingungen
mbchar |
sizeInBytes |
Rückgabewert | pRetValue |
---|---|---|---|
NULL |
>0 | EINVAL |
nicht geändert |
any | >INT_MAX |
EINVAL |
nicht geändert |
any | zu klein | EINVAL |
nicht geändert |
Wenn eine der oben genannten Fehlerbedingungen auftritt, wird der ungültige Parameterhandler aufgerufen, wie in der Parameterüberprüfung beschrieben. Wenn die weitere Ausführung zugelassen wird, gibt wctomb
EINVAL
zurück und setzt errno
auf EINVAL
.
Der Rückgabewert EILSEQ
gibt an, dass der über den Parameter wchar
übergebene Wert kein gültiges breites Zeichen ist.
Hinweise
Die wctomb_s
-Funktion konvertiert das wchar
-Argument in das entsprechende Multibytezeichen und speichert das Ergebnis in mbchar
. Sie können die Funktion von einem beliebigen Punkt in einem beliebigen Programm aufrufen.
Wenn wctomb_s
das Breitzeichen in ein Multibytezeichen konvertiert, wird die Anzahl von Bytes (die nie größer als MB_CUR_MAX
ist) im Breitzeichen in den Integer geschrieben, auf den von pRetValue
gezeigt wird. Wenn wchar
das Breitzeichen NULL (L'\0') ist, füllt wctomb_s
pRetValue
mit 1. Wenn der Zielzeiger mbchar
ist NULL
, wctomb_s
wird 0 in pRetValue
. Wenn die Konvertierung im aktuellen Gebietsschema nicht möglich ist, wctomb_s
wird -1 in pRetValue
.
wctomb_s
verwendet das aktuelle Gebietsschema für jedes Verhalten, das vom Gebietsschema abhängig ist; _wctomb_s_l
ist identisch, nur dass sie stattdessen das übergebene Gebietsschema verwendet. Weitere Informationen finden Sie unter Locale.
Standardmäßig gilt der globale Zustand dieser Funktion für die Anwendung. Wie Sie dieses Verhalten ändern, erfahren Sie unter Globaler Status in der CRT.
Anforderungen
Routine | Erforderlicher Header |
---|---|
wctomb_s |
<stdlib.h> |
_wctomb_s_l |
<stdlib.h> |
Weitere Informationen zur Kompatibilität finden Sie unter Kompatibilität.
Beispiel
Dieses Programm stellt das Verhalten der Funktion wctomb_s
dar.
// crt_wctomb_s.cpp
#include <stdio.h>
#include <stdlib.h>
int main( void )
{
int i;
wchar_t wc = L'a';
char *pmb = (char *)malloc( MB_CUR_MAX );
printf_s( "Convert a wide character:\n" );
wctomb_s( &i, pmb, MB_CUR_MAX, wc );
printf_s( " Characters converted: %u\n", i );
printf_s( " Multibyte character: %.1s\n\n", pmb );
}
Convert a wide character:
Characters converted: 1
Multibyte character: a
Siehe auch
Datenkonvertierung
Gebietsschema
_mbclen
, mblen
_mblen_l
mbstowcs
, _mbstowcs_l
mbtowc
, _mbtowc_l
wcstombs
, _wcstombs_l
WideCharToMultiByte