Namespaces
Variants

std:: mbrtoc8

From cppreference.net
Definiert im Header <cuchar>
std:: size_t mbrtoc8 ( char8_t * pc8,

const char * s,
std:: size_t n,

std:: mbstate_t * ps ) ;
(seit C++20)

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

Wenn s kein Nullzeiger ist, untersucht die Funktion maximal n Bytes der Multibyte-Zeichenkette, beginnend mit dem von s gezeigten Byte, um die Anzahl der Bytes zu bestimmen, die zum Abschließen des nächsten Multibyte-Zeichens (einschließlich aller Shift-Sequenzen) erforderlich sind. 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 std :: mbrtoc8 ( nullptr, "" , 1 , ps ) .

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

Die Multibyte-Kodierung, die von dieser Funktion verwendet wird, 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 Multibyte-Zeichens, das erfolgreich von s konvertiert wurde.
  • static_cast < std:: size_t > ( - 3 ) wenn das nächste UTF-8-Code-Unit eines Zeichens, dessen Kodierung aus mehreren Code-Units besteht, nun in * pc8 geschrieben wurde. In diesem Fall werden keine Bytes von der Eingabe verarbeitet.
  • static_cast < std:: size_t > ( - 2 ) wenn die nächsten n Bytes ein unvollständiges, aber bisher gültiges Multibyte-Zeichen bilden. Nichts wird nach * pc8 geschrieben.
  • static_cast < std:: 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

Siehe auch

(C++20)
konvertiert UTF-8-String in schmale Multibyte-Kodierung
(Funktion)
(C++11)
konvertiert ein schmales Multibyte-Zeichen in UTF-16-Kodierung
(Funktion)
C-Dokumentation für mbrtoc8