std::mbrtoc8
| Definiert in Header <cuchar> |
||
| std::size_t mbrtoc8( char8_t* pc8, const char* s, |
(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
| Dieser Abschnitt ist unvollständig Grund: kein Beispiel |
[bearbeiten] Siehe auch
| (C++20) |
konvertiert einen UTF-8-String in eine schmale Multibyte-Kodierung (Funktion) |
| (C++11) |
konvertiert ein schmales Multibyte-Zeichen in UTF-16-Kodierung (Funktion) |
| C-Dokumentation für mbrtoc8
| |