C ++ mbsrtowcs () - C ++ Standardbibliothek

Die Funktion mbsrtowcs () in C ++ konvertiert eine schmale Multibyte-Zeichenfolge in eine breite Zeichenfolge (vom Typ wchar_t).

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

mbsrtowcs () Prototyp

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

Die Funktion mbsrtowcs () konvertiert die Multibyte-Zeichenfolge, deren erstes Byte durch * src dargestellt wird, in eine entsprechende breite Zeichendarstellung und wird in dem breiten Zeichenarray gespeichert, auf das dest zeigt. Maximal len breite Zeichen werden in dest geschrieben.

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

  • Ein Multibyte-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 Multibyte-Zeichen gefunden. In diesem Fall ist src so eingestellt, dass es auf den Anfang des ersten nicht konvertierten Multibyte-Zeichens zeigt.
  • len wide Zeichen wurde in dest gespeichert. In diesem Fall ist src so eingestellt, dass es auf den Anfang des ersten nicht konvertierten Multibyte-Zeichens zeigt.

mbsrtowcs () Parameter

  • dest: Zeiger auf das Array, in dem das konvertierte breite Zeichen gespeichert ist.
  • src: Zeiger auf Zeiger auf das erste zu konvertierende Multibyte-Zeichen.
  • len: Maximale Anzahl breiter Zeichen zum Speichern.
  • ps: Zeiger auf den Konvertierungsstatus, der bei der Interpretation der Multibyte-Zeichenfolge verwendet wird

mbsrtowcs () Rückgabewert

  • Bei Erfolg gibt die Funktion mbsrtowcs () die Anzahl der in dest geschriebenen breiten Zeichen ohne das abschließende breite Nullzeichen zurück. Wenn dest ein Nullzeiger ist, gibt es die Anzahl der breiten Zeichen zurück, die unter Berücksichtigung einer unbegrenzten Länge geschrieben worden wären.
  • Bei einem Konvertierungsfehler wird -1 zurückgegeben und errno auf EILSEQ gesetzt .

Beispiel: Wie funktioniert die Funktion mbsrtowcs ()?

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

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

 Anzahl der geschriebenen breiten Zeichen (außer L " 0") = 4 Breites Zeichen = ݣݗݿݟ

Interessante Beiträge...