C ++ wcsrtombs () - C ++ Standardbibliothek

Die Funktion wcsrtombs () in C ++ konvertiert eine breite Zeichenfolge in eine schmale Multibyte-Zeichenfolge.

Die Funktion wcsrtombs () ist in der Header-Datei definiert.

wcsrtombs () Prototyp

 size_t wcsrtombs (char * dest, const wchar_t ** src, size_t len, mbstate_t * ps);

Die Funktion wcsrtombs () konvertiert die durch * src dargestellte breite Zeichenfolge in eine entsprechende Multibyte-Zeichenfolge und wird in dem Zeichenfeld gespeichert, auf das dest zeigt, wenn dest nicht null ist. Maximal len Zeichen werden in dest geschrieben.

Der Konvertierungsprozess ähnelt dem wiederholten Aufrufen von wcrtomb (). Die Konvertierung wird beendet, wenn:

  • Ein breites Nullzeichen wurde konvertiert und gespeichert. In diesem Fall wird src auf null gesetzt und ps repräsentiert den anfänglichen Verschiebungszustand.
  • Es wurde ein ungültiges breites Zeichen gefunden. In diesem Fall ist src so eingestellt, dass es auf den Anfang des ersten nicht konvertierten breiten Zeichens zeigt.
  • len bytes wurde in dest gespeichert. In diesem Fall ist src so eingestellt, dass es auf den Anfang des ersten nicht konvertierten breiten Zeichens zeigt.

wcsrtombs () Parameter

  • > dest: Zeiger auf das Zeichenarray, in dem das konvertierte Multibyte-Zeichen gespeichert ist.
  • src: Zeiger auf Zeiger auf das erste breite Zeichen, das konvertiert werden soll.
  • len: Maximale Anzahl der im Zielarray verfügbaren Bytes.
  • ps: Zeiger auf das Konvertierungsstatusobjekt.

wcsrtombs () Rückgabewert

  • Bei Erfolg gibt die Funktion wcsrtombs () die Anzahl der Multibyte-Zeichen zurück, die in dest geschrieben wurden, mit Ausnahme des abschließenden breiten Nullzeichens, jedoch einschließlich Verschiebungssequenzen.
    Wenn dest ein Nullzeiger ist, gibt es die Anzahl der breiten Zeichen zurück, die ohne das abschließende Nullzeichen geschrieben worden wären.
  • Bei einem Konvertierungsfehler wird -1 zurückgegeben und errno auf EILSEQ gesetzt .

Beispiel: Wie funktioniert die Funktion wcsrtombs ()?

 #include #include #include using namespace std; int main() ( setlocale(LC_ALL, "en_US.utf8"); const wchar_t* wstr = L"u0763u0757u077fu075f"; char str(20); mbstate_t ps = mbstate_t(); int len = 10; int retVal; retVal = wcsrtombs(str, &wstr, len, &ps); cout << "Number of multibyte characters written (excluding "\0 ") = " << retVal << endl; cout << "Multibyte character = " << str << endl; return 0; )

Wenn Sie das Programm ausführen, lautet die Ausgabe wie folgt:

 Anzahl der geschriebenen Multibyte-Zeichen (außer " 0") = 8 Multibyte-Zeichen = ݣݗݿݟ

Interessante Beiträge...