Namensräume
Varianten
Aktionen

mbrtoc8

Von cppreference.com
< c‎ | string‎ | multibyte
Definiert im 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 schmal-breites Zeichen in UTF-8-Kodierung.

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

Wenn die UTF-8-Kodierung des schmal-breiten 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 mbrtoc8(nullptr, "", 1, ps).

Wenn die erzeugte UTF-8-Codeeinheit u8'\0' ist, repräsentiert der Konvertierungsstatus *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 die 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 in *pc8 gespeichert, wenn nicht null) das Nullzeichen war.
  • Die Anzahl der Bytes [1n] des erfolgreich aus s konvertierten Mehrbyte-Zeichens.
  • (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.
  • (size_t)-2, wenn die nächsten n Bytes ein unvollständiges, aber bisher gültiges schmal-breites Zeichen darstellen. Nach *pc8 wird nichts geschrieben.
  • (size_t)-1, wenn ein Kodierungsfehler auftritt. Nach *pc8 wird nichts geschrieben, der Wert EILSEQ wird in errno gespeichert und der Wert von *ps ist nicht spezifiziert.

[bearbeiten] Beispiel

[bearbeiten] Referenzen

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

[bearbeiten] Siehe auch

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