std::mbstowcs
| Definiert in 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 dst zeigt. Es werden nicht mehr als len Wide-Characters in das Zielarray geschrieben.
Jedes Zeichen wird konvertiert, als ob es durch einen Aufruf von std::mbtowc erfolgen würde, mit der Ausnahme, dass der mbtowc-Konvertierungsstatus nicht beeinflusst wird. Die Konvertierung stoppt, wenn
- Das Multibyte-Nullzeichen konvertiert und gespeichert wurde.
- Ein ungültiges (in der aktuellen C-Locale) Multibyte-Zeichen angetroffen wurde.
- Das nächste zu speichernde Wide-Character len überschreiten würde.
Inhalt |
[bearbeiten] Hinweise
In den meisten Implementierungen aktualisiert diese Funktion ein globales statisches Objekt vom Typ std::mbstate_t, während sie die Zeichenkette durchläuft. Sie kann nicht gleichzeitig von zwei Threads aufgerufen werden. In solchen Fällen sollte std::mbsrtowcs verwendet werden.
POSIX spezifiziert eine übliche Erweiterung: Wenn dst ein Nullzeiger ist, gibt diese Funktion die Anzahl der Wide-Characters zurück, die in dst konvertiert würden. Ein ähnliches Verhalten ist Standard für std::mbsrtowcs.
[bearbeiten] Parameter
| dst | - | Zeiger auf das Wide-Character-Array, in dem der Wide-String gespeichert wird |
| src | - | Zeiger auf das erste Element einer nullterminierten Multibyte-Zeichenkette zur Konvertierung |
| len | - | Anzahl der Wide-Characters, die im von dst gezeigten Array verfügbar sind |
[bearbeiten] Rückgabewert
Bei Erfolg wird die Anzahl der Wide-Characters zurückgegeben, die in das Zielarray geschrieben wurden, exklusive des abschließenden L'\0'.
Bei einem Konvertierungsfehler (wenn ein ungültiges Multibyte-Zeichen angetroffen wurde) wird static_cast<std::size_t> (-1) zurückgegeben.
[bearbeiten] 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ß水🍌
[bearbeiten] Siehe auch
| konvertiert einen schmalen Multibyte-Zeichenstring in einen Wide-String, gegeben den Zustand (Funktion) | |
| konvertiert einen Wide-String in einen schmalen Multibyte-Zeichenstring (Funktion) | |
| [virtuell] |
konvertiert eine Zeichenkette von ExternT nach InternT, z. B. beim Lesen aus einer Datei(virtual protected member function of std::codecvt<InternT,ExternT,StateT>) |
| C-Dokumentation für mbstowcs
| |