Namespaces
Variants

std:: mbstowcs

From cppreference.net
Definiert im Header <cstdlib>
std:: size_t mbstowcs ( wchar_t * dst, const char * src, std:: size_t len ) ;

Konvertiert eine Multibyte-Zeichenkette aus dem Array, dessen erstes Element von src gezeigt wird, in ihre Wide-Character-Darstellung. Konvertierte Zeichen werden in den aufeinanderfolgenden Elementen des Arrays gespeichert, auf das von dst gezeigt wird. Nicht mehr als len Wide Characters werden in das Zielarray geschrieben.

Jedes Zeichen wird umgewandelt, als ob durch einen Aufruf von std::mbtowc , außer dass der mbtowc-Konvertierungszustand unverändert bleibt. Die Konvertierung stoppt, wenn:

  • Das Multibyte-Nullzeichen wurde konvertiert und gespeichert.
  • Ein ungültiges (im aktuellen C-Locale) Multibyte-Zeichen wurde gefunden.
  • Das nächste zu speichernde Breitzeichen würde len überschreiten.

Inhaltsverzeichnis

Hinweise

In den meisten Implementierungen aktualisiert diese Funktion ein globales statisches Objekt vom Typ std::mbstate_t während sie den String verarbeitet und kann nicht gleichzeitig von zwei Threads aufgerufen werden. std::mbsrtowcs sollte in solchen Fällen verwendet werden.

POSIX spezifiziert eine gemeinsame Erweiterung: wenn dst ein Nullzeiger ist, gibt diese Funktion die Anzahl der Breitzeichen zurück, die in dst geschrieben würden, wenn konvertiert. Ein ähnliches Verhalten ist standardmäßig für std::mbsrtowcs festgelegt.

Parameter

dst - Zeiger auf das Breitzeichen-Array, in dem die Breitzeichenkette gespeichert wird
src - Zeiger auf das erste Element einer nullterminierten Multibyte-Zeichenkette zur Konvertierung
len - Anzahl der im Array verfügbaren Breitzeichen, auf das dst zeigt

Rückgabewert

Bei Erfolg gibt die Anzahl der Breitzeichen zurück, ausgenommen des abschließenden L ' \0 ' , die in das Zielarray geschrieben wurden.

Bei Konvertierungsfehlern (falls ein ungültiges Multibyte-Zeichen angetroffen wurde), gibt static_cast < std:: size_t > ( - 1 ) zurück.

Beispiel

#include <clocale>
#include <cstdlib>
#include <iostream>
int main()
{
    std::setlocale(LC_ALL, "en_US.utf8");
    std::wcout.imbue(std::locale("en_US.utf8"));
    const char* mbstr = "z\u00df\u6c34\U0001f34c"; // or u8"zß水🍌"
                        // or "\x7a\xc3\x9f\xe6\xb0\xb4\xf0\x9f\x8d\x8c";
    wchar_t wstr[5];
    std::mbstowcs(wstr, mbstr, 5);
    std::wcout << "wide string: " << wstr << '\n';
}

Ausgabe:

wide string: zß水🍌

Siehe auch

wandelt eine schmale Multibyte-Zeichenkette in eine Breitzeichenkette um, mit Zustand
(Funktion)
wandelt eine Breitzeichenkette in eine schmale Multibyte-Zeichenkette um
(Funktion)
[virtual]
wandelt eine Zeichenkette von ExternT zu InternT um, z.B. beim Lesen aus einer Datei
(virtuelle geschützte Elementfunktion von std::codecvt<InternT,ExternT,StateT> )
C-Dokumentation für mbstowcs