Namespaces
Variants

mbrtoc8

From cppreference.net
Definiert in Header <uchar.h>
size_t mbrtoc8 ( char8_t * restrict pc8, const char * restrict s, size_t n,
mbstate_t * restrict ps ) ;
(seit C23)

Konvertiert ein schmales Multibyte-Zeichen in die UTF-8-Kodierung.

Wenn s kein Nullzeiger ist, untersucht es höchstens n Bytes der Multibyte-Zeichenkette, beginnend mit dem von s gezeigten Byte, um die Anzahl der Bytes zu bestimmen, die notwendig sind, um das nächste Multibyte-Zeichen (einschließlich aller Shift-Sequenzen) zu vervollständigen. Wenn die Funktion feststellt, dass das nächste Multibyte-Zeichen in s vollständig und gültig ist, konvertiert sie es in UTF-8 und speichert die erste UTF-8-Codeeinheit in * pc8 (falls pc8 nicht null ist).

Wenn die UTF-8-Kodierung des Multibyte-Zeichens in * s aus mehr als einer UTF-8-Codeeinheit besteht, dann wird nach dem ersten Aufruf dieser Funktion * ps so aktualisiert, dass der nächste Aufruf von mbrtoc8 die zusätzlichen UTF-8-Codeeinheiten ausgibt, ohne * s zu berücksichtigen.

Wenn s ein Nullzeiger ist, werden die Werte von n und pc8 ignoriert und der Aufruf entspricht mbrtoc8 ( nullptr, "" , 1 , ps ) .

Wenn das erzeugte UTF-8-Codeelement u8 ' \0 ' ist, repräsentiert der Konvertierungszustand * ps den initialen Schaltzustand.

Die von dieser Funktion verwendete Multibyte-Kodierung wird durch das aktuell aktive C-Locale festgelegt.

Inhaltsverzeichnis

Parameter

pc8 - Zeiger auf den Speicherort, an den die resultierenden UTF-8-Codeeinheiten geschrieben werden
s - Zeiger auf die als Eingabe verwendete Multibyte-Zeichenkette
n - Begrenzung der Anzahl der Bytes in s, die untersucht werden können
ps - Zeiger auf das Konvertierungszustandsobjekt, das bei der Interpretation der Multibyte-Zeichenkette verwendet wird

Rückgabewert

Das erste der folgenden zutreffenden Kriterien:

  • 0 wenn das von s konvertierte Zeichen (und gespeichert in * pc8 falls nicht null) das Nullzeichen war.
  • Die Anzahl der Bytes [ 1 , n ] des erfolgreich von s konvertierten Multibyte-Zeichens.
  • ( size_t ) - 3 wenn die nächste UTF-8-Codeeinheit eines Zeichens, dessen Kodierung aus mehreren Codeeinheiten besteht, nun in * pc8 geschrieben wurde. In diesem Fall werden keine Bytes von der Eingabe verarbeitet.
  • ( size_t ) - 2 wenn die nächsten n Bytes ein unvollständiges, aber bisher gültiges Multibyte-Zeichen darstellen. Nichts wird nach * pc8 geschrieben.
  • ( size_t ) - 1 wenn ein Kodierungsfehler auftritt. Nichts wird nach * pc8 geschrieben, der Wert EILSEQ wird in errno gespeichert und der Wert von * ps ist nicht spezifiziert.

Beispiel

Referenzen

  • C23-Standard (ISO/IEC 9899:2024):
  • 7.30.1.1 Die mbrtoc8-Funktion

Siehe auch

(C23)
wandelt UTF-8-String in schmale Multibyte-Kodierung um
(Funktion)
C++ documentation für mbrtoc8