Freigeben über


mbsrtowcs

Konvertiert eine Zeichenfolge mit Multibytezeichen im aktuellen Gebietsschema in die entsprechende Zeichenfolge mit Breitzeichen, mit der Möglichkeit des Neustarts in der Mitte eines Multibytezeichens. Es ist eine sicherere Version dieser Funktion verfügbar. Informationen dazu finden Sie unter mbsrtowcs_s.

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

Parameter

  • [out] wcstr
    Adresse zum Speichern der resultierenden konvertierten Zeichenfolge mit Breitzeichen.

  • [in, out] mbstr
    Indirekter Zeiger auf den Speicherort der zu konvertierenden Zeichenfolge mit Multibytezeichen.

  • [in] count
    Die maximale Anzahl von Zeichen (nicht Bytes), die konvertiert und in wcstr gespeichert werden sollen.

  • [in, out] mbstate
    Ein Zeiger auf ein mbstate_t-Konvertierungszustandsobjekt. Wenn dieser Wert ein NULL-Zeiger ist, wird ein statisches internes Konvertierungszustandsobjekt verwendet. Da das interne mbstate_t-Objekt nicht threadsicher ist, wird empfohlen, immer Ihren eigenen mbstate-Parameter zu übergeben.

Rückgabewert

Gibt die Anzahl der Zeichen zurück, die erfolgreich konvertiert wurden, nicht einschließlich des abschließenden Zeichens NULL, sofern vorhanden. Gibt (size_t)(-1) bei einem Fehler zurück und legt errno auf EILSEQ fest.

Hinweise

Die mbsrtowcs-Funktion konvertiert eine Zeichenfolge mit Multibytezeichen, auf die indirekt von mbstr verwiesen wird, in im Puffer gespeicherte Breitzeichen, auf die von wcstr verwiesen wird, und verwendet dafür den in mbstate enthaltenen Konvertierungszustand. Die Konvertierung wird für jedes Zeichen fortgesetzt, bis entweder ein abschließendes Multibytezeichen NULL oder eine Multibytesequenz gefunden wird, die keinem gültigen Zeichen im aktuellen Gebietsschema entspricht, oder bis count Zeichen konvertiert wurden. Wenn mbsrtowcs das Multibytezeichen NULL ('\0') erkennt, entweder vor oder bei count, wird es in ein abschließendes 16-Bit-Zeichen NULL konvertiert und beendet.

Folglich endet die Breitzeichen-Zeichenfolge bei wcstr nur dann auf NULL, wenn mbsrtowcs während der Konvertierung ein Multibytezeichen NULL findet. Wenn die Sequenzen, auf die von mbstr und wcstr verwiesen wird, überlappen, ist das Verhalten von mbsrtowcs nicht definiert. mbsrtowcs wird von der LC_TYPE-Kategorie des aktuellen Gebietsschemas beeinflusst.

Die mbsrtowcs-Funktion unterscheidet sich von mbstowcs, _mbstowcs_l durch die Neustartmöglichkeit. Der Konvertierungszustand wird für nachfolgende Aufrufe der gleichen oder anderer Funktionen, die neu gestartet werden können, in mbstate gespeichert. Wenn sowohl Funktionen, die neu gestartet werden können, als auch Funktionen, die nicht neu gestartet werden könnnen, verwendet werden, sind die Ergebnisse undefiniert. Beispiel: Eine Anwendung soll mbsrlen anstelle von mbslen verwenden, wenn ein nachfolgender Aufruf von mbsrtowcs anstelle von mbstowcs. verwendet wird.

Wenn wcstr kein NULL-Zeiger ist, wird das Zeigerobjekt, auf das von mbstr verwiesen wird, einem NULL-Zeiger zugewiesen, wenn die Konvertierung beendet wird, da ein abschließendes Nullzeichen erreicht wurde. Andernfalls wird es ggf. der Adresse unmittelbar nach dem letzten konvertierten Multibytezeichen zugewiesen. Auf diese Weise kann ein nachfolgender Funktionsaufruf die Konvertierung an der Stelle neu starten, an der der Aufruf beendet wurde.

Wenn das wcstr-Argument ein NULL-Zeiger ist, wird das count-Argument ignoriert, und mbsrtowcs gibt die erforderliche Größe in Breitzeichen für die Zielzeichenfolge zurück. Wenn mbstate ein NULL-Zeiger ist, verwendet die Funktion ein nicht threadsicheres statisches internes mbstate_t-Konvertierungszustandsobjekt. Wenn die Zeichensequenz mbstr nicht über eine entsprechende Multibyte-Zeichendarstellung verfügt, wird -1 zurückgegeben, und errno wird auf EILSEQ festgelegt.

Wenn mbstr ein NULL-Zeiger ist, wird der Handler für ungültige Parameter aufgerufen, wie in Parametervalidierung beschrieben. Wenn die weitere Ausführung zugelassen wird, setzt diese Funktion errno auf EINVAL und gibt "-1" zurück.

In C++ hat diese Funktion eine Vorlagenüberladung, mit der die neuere, sichere Entsprechung dieser Funktion aufgerufen wird. Weitere Informationen finden Sie unter Sichere Vorlagenüberladungen.

Ausnahmen

Die mbsrtowcs-Funktion ist multithreadsicher ist, solange keine Funktion im aktuellen Thread setlocale aufruft, solange diese Funktion ausgeführt wird und das mbstate-Argument kein NULL-Zeiger ist.

.NET Framework-Entsprechung

Nicht zutreffend. Mit PInvoke rufen Sie die Standard-C-Funktion auf. Weitere Informationen finden Sie unter Beispiele für Plattformaufrufe.

Anforderungen

Routine

Erforderlicher Header

mbsrtowcs

<wchar.h>

Siehe auch

Referenz

Datenkonvertierung

Locale

Interpretation von Mehrbytezeichensequenzen

mbrtowc

mbtowc, _mbtowc_l

mbstowcs, _mbstowcs_l

mbsinit