C ++ mbrtoc32 () - C ++ Standardbibliothek

Die Funktion mbrtoc32 () in C ++ konvertiert ein schmales Multibyte-Zeichen in eine 32-Bit-Zeichendarstellung.

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

mbrtoc32 () Prototyp

 size_t mbrtoc32 (char32_t * pc32, const char * s, size_t n, mbstate_t * ps);

Die Funktion mbrtoc32 () konvertiert höchstens n durch s dargestellte Multibyte-Zeichen in das entsprechende utf-32-Zeichen und speichert es an dem Speicherort, auf den pc32 zeigt.

Wenn s einen Nullzeiger darstellt, werden die Werte von n und pc32 ignoriert und der Aufruf von entspricht mbrtoc32(NULL, "", 1, ps).

Wenn das resultierende erzeugte Zeichen null ist, repräsentiert der Konvertierungszustand * ps den anfänglichen Verschiebungszustand.

mbrtoc32 () Parameter

  • pc32: Zeiger auf den Speicherort zum Speichern des resultierenden 32-Bit-Zeichens.
  • s: Zeiger auf das zu konvertierende Multibyte-Zeichen.
  • n: Maximale Anzahl der zu konvertierenden Bytes in s.
  • ps: Ein Zeiger auf ein mbstate_t-Objekt, das beim Interpretieren der Multibyte-Zeichenfolge verwendet wird.

mbrtoc32 () Rückgabewert

Die Funktion mbrtoc32 () gibt den ersten der folgenden Werte zurück, der den folgenden Fällen entspricht:

  • 0, wenn das konvertierte Zeichen ein Nullzeichen ist.
  • Die Anzahl der Bytes (höchstens n) des Multibyte-Zeichens, das erfolgreich in ein 32-Bit-Zeichen konvertiert wurde.
  • -3, wenn das nächste char32_tZeichen aus einem Zeichen mit mehreren Zeichen 32_t (z. B. ein Ersatzpaar) jetzt in * pc32 geschrieben wurde. In diesem Fall werden keine Bytes von der Eingabe verarbeitet.
  • -2 wenn die nächsten n Bytes ein unvollständiges, aber bisher gültiges Multibyte-Zeichen darstellen. In diesem Fall wird nichts in * pc32 geschrieben.
  • -1, wenn ein Codierungsfehler auftritt. In diesem Fall wird nichts in * pc32 geschrieben, errno wird auf EILSEQ gesetzt und der Wert von * ps wird nicht angegeben.

Beispiel: Wie funktioniert die Funktion mbrtoc32 ()?

 #include #include #include #include using namespace std; int main(void) ( char32_t pc32; char s() = "x" ; mbstate_t ps; int length; length = mbrtoc32(&pc32, s, MB_CUR_MAX, &ps); if (length < 0) ( perror("mbrtoc32() fails to convert"); exit(-1); ) cout << "Multibyte string = " << s << endl; cout << "Length = " << length << endl; printf ("32-bit character = 0x%08hx", pc32); return 0; )

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

 Multibyte-Zeichenfolge = x Länge = 1 32-Bit-Zeichen = 0x00000078

Interessante Beiträge...