std:: wcstombs
|
Definiert im Header
<cstdlib>
|
||
|
std::
size_t
wcstombs
(
char
*
dst,
const
wchar_t
*
src,
std::
size_t
len
)
;
|
||
Konvertiert eine Sequenz von Breitzeichen aus dem Array, dessen erstes Element durch src gezeigt wird, in ihre schmale Multibyte-Darstellung, die im initialen Shift-Zustand beginnt. Konvertierte Zeichen werden in den aufeinanderfolgenden Elementen des char-Arrays gespeichert, auf das durch dst gezeigt wird. Nicht mehr als len Bytes werden in das Zielarray geschrieben.
Jedes Zeichen wird umgewandelt, als ob durch einen Aufruf von std::wctomb , außer dass der Konvertierungszustand von wctomb unverändert bleibt. Die Konvertierung stoppt, wenn:
- Das Nullzeichen wurde konvertiert und gespeichert.
- Ein wchar_t wurde gefunden, der keinem gültigen Zeichen in der aktuellen C-Locale entspricht.
- Das nächste zu speichernde Multibyte-Zeichen 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:: wcsrtombs sollte in solchen Fällen verwendet werden.
POSIX spezifiziert eine gemeinsame Erweiterung: wenn dst ein Nullzeiger ist, gibt diese Funktion die Anzahl der Bytes zurück, die in dst geschrieben würden, wenn konvertiert. Ein ähnliches Verhalten ist Standard für std:: wcsrtombs .
Parameter
| dst | - | Zeiger auf das schmale Zeichenarray, in dem das Multibyte-Zeichen gespeichert wird |
| src | - | Zeiger auf das erste Element eines nullterminierten Breitzeichen-Strings zur Konvertierung |
| len | - | Anzahl der im Array verfügbaren Bytes, auf das dst zeigt |
Rückgabewert
Bei Erfolg gibt die Anzahl der Bytes (einschließlich aller Shift-Sequenzen, jedoch ausschließlich des abschließenden ' \0 ' ) zurück, die in das Zeichenarray geschrieben wurden, dessen erstes Element durch dst gezeigt wird.
Bei Konvertierungsfehlern (falls ein ungültiges Breitzeichen 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"); // UTF-8 narrow multibyte encoding const wchar_t* wstr = L"z\u00df\u6c34\U0001d10b"; // or L"zß水𝄋" char mbstr[11]; std::wcstombs(mbstr, wstr, 11); std::cout << "multibyte string: " << mbstr << '\n'; }
Ausgabe:
multibyte string: zß水𝄋
Siehe auch
|
wandelt eine Breitzeichen-Zeichenkette in eine schmale Multibyte-Zeichenkette um, mit Zustand
(Funktion) |
|
|
wandelt eine schmale Multibyte-Zeichenkette in eine Breitzeichen-Zeichenkette um
(Funktion) |
|
|
[virtual]
|
wandelt eine Zeichenkette von
InternT
zu
ExternT
um, z.B. beim Schreiben in eine Datei
(virtuelle geschützte Memberfunktion von
std::codecvt<InternT,ExternT,StateT>
)
|
|
C-Dokumentation
für
wcstombs
|
|