Freigeben über


mbsrtowcs_s

Konvertieren einer Zeichenfolge mit Breitzeichen zur Mehrbytezeichen zeichenfolgendarstellung.Eine Version von mbsrtowcs mit unter Security Enhancements, wie in Sicherheitsfeatures im CRTbeschrieben.

errno_t mbsrtowcs_s(
   size_t *pReturnValue,
   wchar_t *wcstr,
   size_t sizeInWords,
   const char **mbstr,
   size_t count,
   mbstate_t *mbstate
);
template <size_t size>
errno_t mbsrtowcs_s(
   size_t *pReturnValue,
   wchar_t (&wcstr)[size],
   const char **mbstr,
   size_t count,
   mbstate_t *mbstate
); // C++ only

Parameter

  • [out] pReturnValue
    Die Anzahl von Zeichen konvertiert.

  • [out] wcstr
    Adresse des Puffers für die resultierende konvertierte Zeichenfolge mit Breitzeichen.

  • [out] sizeInWords
    Die Größe von wcstr in den Wörtern (Breitzeichen).

  • [in] mbstr
    Zeigt den Speicherort der zu konvertierende zeichenkette Mehrbytezeichen.

  • [in] count
    Die maximale Anzahl der im Puffer, wcstr ohne das abschließende NULL-Zeichen zu speichern, oder _TRUNCATEder Breitzeichen.

  • [in] mbstate
    Ein Zeiger auf einen mbstate_t Konvertierung zustands Objekt.

Rückgabewert

Beliebige wenn erfolgreich, ein Fehlercode auf Fehler.

Fehlerzustand

Rückgabewert und errno

wcstr ist NULL und sizeInWords > 0

EINVAL

mbstr ist NULL

EINVAL

Der Zielpuffer ist zu klein, die das konvertierte Zeichenfolge aufzunehmen (es sei denn, count_TRUNCATEist. siehe Hinweise)

ERANGE

Wenn eine dieser Bedingungen auftritt, wird die ungültige Parameter ausnahme aufgerufen, wie in Parametervalidierung beschrieben.Wenn die Ausführung ermöglicht wird, um fortzufahren, gibt die Funktion einen Fehlercode zurück und legt ihn fest errno , wie in der Tabelle angegeben.

Hinweise

Die mbsrtowcs_s-Funktion konvertiert eine Zeichenfolge mit Mehrbytezeichen, die durch mbstr in Breitzeichen dargestellt werden, die im Puffer gespeichert werden, der durch wcstrunter Verwendung des zustandes Konvertierung angezeigten Text, der in mbstateenthalten ist.Die Konvertierung wird für jedes Zeichen fort, bis eine dieser Bedingungen erfüllt ist:

  • Ein Mehrbytes NULL-Zeichen auftritt

  • Ein ungültiges Mehrbytezeichen auftritt

  • Die Anzahl der Breitzeichen, die in wcstr Puffer gespeichert werden, entspricht count.

Die Zielzeichenfolge ist immer auf NULL endende (selbst im Falle eines Fehlers).

Wenn count um den besonderen Wert _TRUNCATEist, konvertiert mbsrtowcs_s so viel der Zeichenfolge in den Zielpuffer passt, während noch Platz für ein NULL-Abschlusszeichen.

Wenn die Quellzeichenfolge mbsrtowcs_s erfolgreich konvertiert, wird die Größe der konvertierten Zeichenfolge mit Breitzeichen, einschließlich des NULL-Terminators, in *pReturnValue (bereitgestelltes pReturnValue ist nicht NULL).Dies tritt auf, wcstr , selbst wenn das Argument NULL und ermöglicht die erforderliche Puffergröße zu ermitteln.Beachten Sie, dass beim wcstrNULList, count ignoriert wird.

Wenn mbstateNULList, wird der interne Zustand mbstate_t Konvertierung verwendet.

Wenn mbsrtowcs_s ein ungültiges Mehrbytezeichen findet, gibt sie -1 in *einpReturnValuelegt den Zielpuffer zu einer leeren Zeichenfolge errno legt diesen fest EILSEQfest und gibt an EILSEQzurück.

Wenn die Sequenzen, die über mbstr und wcstr Überlappung, das Verhalten von mbsrtowcs_s dargestellt werden, nicht definiert ist.mbsrtowcs_s wurde durch die LC_TYPE-Kategorie des aktuellen Gebietsschemas betroffen.

SicherheitshinweisSicherheitshinweis

Stellen Sie sicher, dass wcstr und mbstr sich nicht überschneiden und dass count ordnungsgemäß die Anzahl der Mehrbytezeichen auf Convert widerspiegelt.

Die mbsrtowcs_s-Funktion unterscheidet sich von mbstowcs_s, _mbstowcs_s_l durch seine Neustartfähigkeit.Der Zustand der Konvertierung in mbstate für nachfolgende Aufrufe an derselben oder zu einer anderen restartable Funktionen gespeichert.Ergebnisse werden nicht definiert, wenn die Verwendung restartable und nonrestartable Funktionen kombiniert.Beispielsweise kann eine Anwendung mbsrlen statt mbslenverwenden, wenn ein nachfolgender Aufruf von mbsrtowcs_smbstowcs_s.nicht verwendet wurden

In C++ unter Verwendung dieser Funktion wird durch Vorlagen Operatoren vereinfacht. Die Überladungen können die Pufferlänge (die Anforderung automatisch beseitigend ableiten, die ein Argument angegeben) und können nicht-sicheren, die älteren Funktionen über ihre Äquivalente sicheren, aktuelleren automatisch ersetzen.Weitere Informationen finden Sie unter Speichern Sie Vorlagen-Überladungen.

Ausnahmen

Die mbsrtowcs-Funktion ist multithreadsicher, solange keine Funktion im aktuellen Thread setlocale aufgerufen, während diese Funktion ausführt und mbstate NULL ist.

.NET Framework-Entsprechung

Nicht zutreffend. Um die Standard-C-Funktion aufrufen, verwenden Sie PInvoke. Weitere Informationen finden Sie unter Plattformaufruf-Beispiele.

Anforderungen

Routine

Erforderlicher Header

mbsrtowcs

<wchar.h>

Siehe auch

Referenz

Datenkonvertierung

Gebietsschema

Interpretation von Mehrbytezeichen-Sequenzen

mbrtowc

mbtowc, _mbtowc_l

mbstowcs_s, _mbstowcs_s_l

mbsinit