mbrtoc8
| Definiert im Header <uchar.h> |
||
| (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
[1,n]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
| Dieser Abschnitt ist unvollständig Grund: kein Beispiel |
[bearbeiten] Referenzen
- C23-Standard (ISO/IEC 9899:2024)
- 7.30.1.1 Die Funktion mbrtoc8
[bearbeiten] Siehe auch
| (C23) |
konvertiert einen UTF-8-String in eine schmale Multibyte-Kodierung (Funktion) |
| C++ Dokumentation für mbrtoc8
| |