C ++ mbrtoc16 () - C ++ Standardbibliothek

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

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

mbrtoc16 () Prototyp

 size_t mbrtoc16 (char16_t * pc16, const char * s, size_t n, mbstate_t * ps);

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

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

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

mbrtoc16 () Parameter

  • pc16: Zeiger auf den Speicherort zum Speichern des resultierenden 16-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.

mbrtoc16 () Rückgabewert

Die Funktion mbrtoc16 () 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 16-Bit-Zeichen konvertiert wurde.
  • -3, wenn das nächste char16_tZeichen aus einem Zeichen mit mehreren Zeichen16_t (z. B. einem Ersatzpaar) jetzt in * pc16 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 * pc16 geschrieben.
  • -1, wenn ein Codierungsfehler auftritt. In diesem Fall wird nichts in * pc16 geschrieben, errno wird auf EILSEQ gesetzt und der Wert von * ps ist nicht angegeben.

Beispiel: Wie funktioniert die Funktion mbrtoc16 ()?

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

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

 Multibyte-Zeichenfolge = x Länge> h = 1 16-Bit-Zeichen = 0x0078

Interessante Beiträge...