std:: mbstowcs
|
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
|
|