Namespaces
Variants

std:: wcstombs

From cppreference.net
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