Namensräume
Varianten
Aktionen

std::mbrtoc8

Von cppreference.com
< cpp‎ | string‎ | multibyte
 
 
 
 
Definiert in Header <cuchar>
std::size_t mbrtoc8( char8_t* pc8,

                     const char* s,
                     std::size_t n,

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

Wandelt ein schmalen Mehrbyte-Zeichen in UTF-8-Kodierung um.

Wenn s kein Nullzeiger ist, werden höchstens n Bytes des Mehrbyte-Zeichenstrings, beginnend mit dem Byte, auf das s zeigt, untersucht, um die Anzahl der Bytes zu bestimmen, die zur Vervollständigung des nächsten Mehrbyte-Zeichens (einschließlich etwaiger Umschaltsequenzen) benötigt werden. Wenn die Funktion feststellt, dass das nächste Mehrbyte-Zeichen in s vollständig und gültig ist, konvertiert sie es in UTF-8 und speichert die erste UTF-8-Codeeinheit in *pc8 (wenn pc8 nicht null ist).

Wenn die UTF-8-Kodierung des Mehrbyte-Zeichens in *s mehr als eine UTF-8-Codeeinheit umfasst, 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 ist äquivalent zu std::mbrtoc8(nullptr, "", 1, ps).

Wenn die erzeugte UTF-8-Codeeinheit u8'\0' ist, repräsentiert der Konvertierungszustand *ps den initialen Umschaltzustand.

Die von dieser Funktion verwendete Multibyte-Kodierung wird durch die aktuell aktive C-Locale bestimmt.

Inhalt

[bearbeiten] Parameter

pc8 - Zeiger auf die Stelle, an der die resultierenden UTF-8-Codeeinheiten geschrieben werden sollen
s - Zeiger auf den Mehrbyte-Zeichenstring, der als Eingabe verwendet wird
n - Grenze für die Anzahl der Bytes in s, die untersucht werden können
ps - Zeiger auf das Konvertierungszustandsobjekt, das bei der Interpretation des Multibyte-Strings verwendet wird

[bearbeiten] Rückgabewert

Das erste der folgenden zutreffenden Elemente

  • 0, wenn das aus s konvertierte Zeichen (und falls *pc8 nicht null ist, dort gespeichert) das Nullzeichen war.
  • Die Anzahl der Bytes [1...n] des Mehrbyte-Zeichens, das erfolgreich aus s konvertiert wurde.
  • static_cast<std::size_t>(-3), wenn die nächste UTF-8-Codeeinheit eines Zeichens, dessen Kodierung aus mehreren Codeeinheiten besteht, nun nach *pc8 geschrieben wurde. In diesem Fall werden keine Bytes aus der Eingabe verarbeitet.
  • static_cast<std::size_t>(-2), wenn die nächsten n Bytes ein unvollständiges, aber bisher gültiges Mehrbyte-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 undefiniert.

[bearbeiten] Beispiel

[bearbeiten] Siehe auch

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