mbstowcs_s
, _mbstowcs_s_l
Konvertiert eine Multibyte-Zeichensequenz in eine entsprechende Breitzeichensequenz. Versionen von mbstowcs
, _mbstowcs_l
mit Sicherheitsverbesserungen, wie in den Sicherheitsfeatures in der CRT beschrieben.
Syntax
errno_t mbstowcs_s(
size_t *pReturnValue,
wchar_t *wcstr,
size_t sizeInWords,
const char *mbstr,
size_t count
);
errno_t _mbstowcs_s_l(
size_t *pReturnValue,
wchar_t *wcstr,
size_t sizeInWords,
const char *mbstr,
size_t count,
_locale_t locale
);
template <size_t size>
errno_t mbstowcs_s(
size_t *pReturnValue,
wchar_t (&wcstr)[size],
const char *mbstr,
size_t count
); // C++ only
template <size_t size>
errno_t _mbstowcs_s_l(
size_t *pReturnValue,
wchar_t (&wcstr)[size],
const char *mbstr,
size_t count,
_locale_t locale
); // C++ only
Parameter
pReturnValue
Die Anzahl von konvertierten Zeichen.
wcstr
Pufferadresse zum Speichern der resultierenden konvertierten Breitzeichenfolge.
sizeInWords
Größe des Puffers wcstr
in Worten.
mbstr
Adresse einer Multibyte-Zeichensequenz.
count
Die maximale Anzahl von breiten Zeichen, die wcstr
im Puffer gespeichert werden sollen, nicht einschließlich des endenden Nullwerts oder _TRUNCATE
.
locale
Das zu verwendende Gebietsschema.
Rückgabewert
Null, wenn erfolgreich, Fehlercode bei Fehler.
Fehlerbedingung | Rückgabewert und errno |
---|---|
wcstr ist NULL und sizeInWords > 0 |
EINVAL |
mbstr ist NULL . |
EINVAL |
Der Zielpuffer ist für die konvertierte Zeichenfolge zu klein (es sei denn, count ist gleich _TRUNCATE ; siehe Abschnitt „Hinweise“) |
ERANGE |
wcstr ist nicht NULL und sizeInWords == 0 |
EINVAL |
Wenn eine dieser Bedingungen auftritt, wird die ausnahme für ungültige Parameter aufgerufen, wie in der Parameterüberprüfung beschrieben. Wenn die Ausführung fortgesetzt werden kann, gibt die Funktion einen Fehlercode zurück und legt errno
wie in der Tabelle angegeben fest.
Hinweise
Die mbstowcs_s
-Funktion konvertiert eine Zeichenfolge mit Multibytezeichen, auf die von mbstr
verwiesen wird, in im Puffer gespeicherte Breitzeichen, auf die von wcstr
verwiesen wird. Die Konvertierung wird für jedes Zeichen fortgesetzt, bis eine der folgenden Bedingungen eintritt:
Ein Multibyte-Nullzeichen wird erkannt.
Ein ungültiges Multibytezeichen wird erkannt.
Die Anzahl der Breitzeichen, die im
wcstr
-Puffer gespeichert sind, ist gleichcount
.
Die Zielzeichenfolge wird immer null beendet (auch wenn ein Fehler auftritt).
Wenn count
es sich um den speziellen Wert _TRUNCATE
handelt, mbstowcs_s
wird so viel der Zeichenfolge konvertiert, wie er in den Zielpuffer passt, während der Raum für einen Null-Endator noch nicht verfügbar ist.
Wenn mbstowcs_s
die Quellzeichenfolge erfolgreich konvertiert wird, wird die Größe in breite Zeichen der konvertierten Zeichenfolge, einschließlich des Null-Terminators, in *pReturnValue
(angegeben pReturnValue
ist nicht NULL
) eingefügt. Die Größe wird auch dann berechnet, wenn das wcstr
Argument lautet NULL
, und bietet eine Möglichkeit, die erforderliche Puffergröße zu bestimmen. Wenn wcstr
dies der Wert ist NULL
, count
wird ignoriert und sizeInWords
muss 0 sein.
Wenn mbstowcs_s
ein ungültiges Multibytezeichen erkennt, schreibt es 0 in *pReturnValue
, legt den Zielpuffer auf eine leere Zeichenfolge fest, legt errno
auf EILSEQ
fest und gibt dann EILSEQ
zurück.
Wenn die Sequenzen, auf die von mbstr
und wcstr
verwiesen wird, überlappen, ist das Verhalten von mbstowcs_s
nicht definiert.
Wichtig
Stellen Sie sicher, dass wcstr
und mbstr
nicht überlappen und dass count
die Anzahl zu konvertierenderMultibytezeichen korrekt darstellt.
mbstowcs_s
verwendet das aktuelle Gebietsschema für jedes Verhalten, das vom Gebietsschema abhängig ist; _mbstowcs_s_l
ist identisch, nur dass sie stattdessen das übergebene Gebietsschema verwendet. Weitere Informationen finden Sie unter Locale.
In C++ wird die Verwendung dieser Funktionen durch Vorlagenüberladungen vereinfacht; die Überladungen können automatisch Rückschlüsse auf die Pufferlänge ziehen (wodurch kein Größenargument mehr angegeben werden muss), und sie können automatisch die älteren, nicht sicheren Funktionen durch ihre neueren, sicheren Entsprechungen ersetzen. Weitere Informationen finden Sie unter Secure Template Overloads.
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 |
---|---|
mbstowcs_s |
<stdlib.h> |
_mbstowcs_s_l |
<stdlib.h> |
Weitere Informationen zur Kompatibilität finden Sie unter Kompatibilität.
Siehe auch
Datenkonvertierung
Gebietsschema
MultiByteToWideChar
Interpretation von Multibytezeichensequenzen
_mbclen
, mblen
_mblen_l
mbtowc
, _mbtowc_l
wcstombs
, _wcstombs_l
wctomb
, _wctomb_l