Namespaces
Variants

Null-terminated multibyte strings

From cppreference.net

Eine nullterminierte Multibyte-Zeichenkette (NTMBS), oder "Multibyte-Zeichenkette", ist eine Folge von Bytes ungleich Null, gefolgt von einem Byte mit dem Wert Null (dem abschließenden Nullzeichen).

Jedes im String gespeicherte Zeichen kann mehr als ein Byte belegen. Die zur Darstellung von Zeichen in einer Multibyte-Zeichenkette verwendete Kodierung ist localespezifisch: Es kann sich um UTF-8, GB18030, EUC-JP, Shift-JIS usw. handeln. Beispielsweise ist das char-Array { ' \xe4 ' , ' \xbd ' , ' \xa0 ' , ' \xe5 ' , ' \xa5 ' , ' \xbd ' , ' \0 ' } ein NTMBS, das die Zeichenkette "你好" in UTF-8-Multibyte-Kodierung enthält: Die ersten drei Bytes kodieren das Zeichen 你, die nächsten drei Bytes kodieren das Zeichen 好. Dieselbe Zeichenkette, kodiert in GB18030, ist das char-Array { ' \xc4 ' , ' \xe3 ' , ' \xba ' , ' \xc3 ' , ' \0 ' } , wobei jedes der beiden Zeichen als Zwei-Byte-Sequenz kodiert ist.

In einigen Multibyte-Kodierungen kann jede gegebene Multibyte-Zeichensequenz je nach vorheriger Byte-Sequenz unterschiedliche Zeichen darstellen, bekannt als "Shift-Sequenzen". Solche Kodierungen werden als zustandsabhängig bezeichnet: Zur Interpretation jedes Zeichens ist die Kenntnis des aktuellen Shift-Zustands erforderlich. Ein NTMBS ist nur gültig, wenn es im initialen Shift-Zustand beginnt und endet: Wenn eine Shift-Sequenz verwendet wurde, muss die entsprechende Unshift-Sequenz vor dem abschließenden Nullzeichen vorhanden sein. Beispiele für solche Kodierungen sind BOCU-1 und SCSU .

Ein Multibyte-Zeichenstring ist layoutkompatibel mit einem nullterminierten Byte-String (NTBS), das heißt, er kann mit denselben Mitteln gespeichert, kopiert und untersucht werden, mit Ausnahme der Berechnung der Anzahl der Zeichen. Wenn das korrekte Gebietsschema aktiv ist, verarbeiten E/A-Funktionen auch Multibyte-Strings. Multibyte-Strings können mit den folgenden gebietsschemaabhängigen Konvertierungsfunktionen in Breitzeichen-Strings umgewandelt werden und umgekehrt:

Inhaltsverzeichnis

Funktionen

Multibyte-/Breitzeichen-Konvertierungen
Definiert im Header <stdlib.h>
gibt die Anzahl der Bytes im nächsten Multibyte-Zeichen zurück
(Funktion)
wandelt das nächste Multibyte-Zeichen in ein Breitzeichen um
(Funktion)
wandelt ein Breitzeichen in seine Multibyte-Darstellung um
(Funktion)
wandelt eine Multibyte-Zeichenkette in eine Breitzeichenkette um
(Funktion)
wandelt eine Wide-String in eine Narrow-Multibyte-Zeichenkette um
(Funktion)
Definiert im Header <wchar.h>
(C95)
prüft, ob das mbstate_t-Objekt den initialen Schaltzustand repräsentiert
(Funktion)
(C95)
erweitert ein Single-Byte-Zeichen zu einem Breitzeichen, falls möglich
(Funktion)
(C95)
verengt ein Breitzeichen zu einem Einzelbyte-Zeichen, falls möglich
(Funktion)
(C95)
gibt die Anzahl der Bytes im nächsten Multibyte-Zeichen zurück, unter Berücksichtigung des Zustands
(Funktion)
(C95)
wandelt das nächste Multibyte-Zeichen in ein Breitzeichen um, unter Berücksichtigung des Zustands
(Funktion)
wandelt ein Breitzeichen in seine Multibyte-Darstellung um, unter Berücksichtigung des Zustands
(Funktion)
wandelt eine schmale Multibyte-Zeichenkette in eine Breitzeichenkette um, mit Zustandsangabe
(Funktion)
wandelt eine Wide-String in eine schmale Multibyte-Zeichenkette um, unter Angabe des Zustands
(Funktion)
Definiert im Header <uchar.h>
(C23)
wandelt ein schmales Multibyte-Zeichen in UTF-8-Kodierung um
(Funktion)
(C23)
konvertiert UTF-8-String in schmale Multibyte-Kodierung
(Funktion)
wandelt ein schmales Multibyte-Zeichen in UTF-16-Kodierung um
(Funktion)
wandelt ein UTF-16-Zeichen in eine schmale Multibyte-Kodierung um
(Funktion)
wandelt ein schmales Multibyte-Zeichen in UTF-32-Kodierung um
(Funktion)
wandelt ein UTF-32-Zeichen in eine schmale Multibyte-Kodierung um
(Funktion)

Typen

Definiert im Header <uchar.h>
Definiert im Header <wchar.h>
Konvertierungsstatusinformationen, die zum Iterieren von Multibyte-Zeichenketten erforderlich sind
(Klasse)
Definiert im Header <uchar.h>
(C23)
8-Bit-Zeichentyp
(Typedef)
16-Bit-Zeichentyp
(Typedef)
32-Bit-Zeichentyp
(Typedef)

Makros

Definiert in Header <limits.h>
MB_LEN_MAX
Maximale Anzahl Bytes in einem Multibyte-Zeichen, für alle unterstützten Locales
(Makrokonstante)
Definiert in Header <stdlib.h>
MB_CUR_MAX
Maximale Anzahl Bytes in einem Multibyte-Zeichen, in der aktuellen Locale
(Makrovariable)

Referenzen

  • C23-Standard (ISO/IEC 9899:2024):
  • 7.10 Größen ganzzahliger Typen <limits.h> (S.: TBD)
  • 7.22 Allgemeine Hilfsfunktionen <stdlib.h> (S.: TBD)
  • 7.28 Unicode-Hilfsfunktionen <uchar.h> (S.: TBD)
  • 7.29 Erweiterte Multibyte- und Breitzeichen-Hilfsfunktionen <wchar.h> (S.: TBD)
  • 7.31.12 Allgemeine Hilfsfunktionen <stdlib.h> (S.: TBD)
  • 7.31.16 Erweiterte Multibyte- und Breitzeichen-Hilfsfunktionen <wchar.h> (S.: TBD)
  • K.3.6 Allgemeine Hilfsfunktionen <stdlib.h> (S.: TBD)
  • K.3.9 Erweiterte Multibyte- und Breitzeichen-Hilfsfunktionen <wchar.h> (S.: TBD)
  • C17-Standard (ISO/IEC 9899:2018):
  • 7.10 Größen ganzzahliger Typen <limits.h> (S.: TBD)
  • 7.22 Allgemeine Hilfsfunktionen <stdlib.h> (S.: TBD)
  • 7.28 Unicode-Hilfsfunktionen <uchar.h> (S.: TBD)
  • 7.29 Erweiterte Multibyte- und Breitzeichen-Hilfsfunktionen <wchar.h> (S.: TBD)
  • 7.31.12 Allgemeine Hilfsfunktionen <stdlib.h> (S.: TBD)
  • 7.31.16 Erweiterte Multibyte- und Breitzeichen-Hilfsfunktionen <wchar.h> (S.: TBD)
  • K.3.6 Allgemeine Hilfsfunktionen <stdlib.h> (S.: TBD)
  • K.3.9 Erweiterte Multibyte- und Breitzeichen-Hilfsfunktionen <wchar.h> (S.: TBD)
  • C11-Standard (ISO/IEC 9899:2011):
  • 7.10 Größen ganzzahliger Typen <limits.h> (S. 222)
  • 7.22 Allgemeine Hilfsfunktionen <stdlib.h> (S. 340-360)
  • 7.28 Unicode-Hilfsfunktionen <uchar.h> (S. 398-401)
  • 7.29 Erweiterte Multibyte- und Breitzeichen-Hilfsfunktionen <wchar.h> (S. 402-446)
  • 7.31.12 Allgemeine Hilfsfunktionen <stdlib.h> (S. 456)
  • 7.31.16 Erweiterte Multibyte- und Breitzeichen-Hilfsfunktionen <wchar.h> (S. 456)
  • K.3.6 Allgemeine Hilfsfunktionen <stdlib.h> (S. 604-614)
  • K.3.9 Erweiterte Multibyte- und Breitzeichen-Hilfsfunktionen <wchar.h> (S. 627-651)
  • C99-Standard (ISO/IEC 9899:1999):
  • 7.10 Größen der ganzzahligen Typen <limits.h> (S. 203)
  • 7.20 Allgemeine Hilfsfunktionen <stdlib.h> (S. 306-324)
  • 7.24 Erweiterte Multibyte- und Breitzeichen-Hilfsfunktionen <wchar.h> (S. 348-392)
  • 7.26.10 Allgemeine Hilfsfunktionen <stdlib.h> (S. 402)
  • 7.26.12 Erweiterte Multibyte- und Breitzeichen-Hilfsfunktionen <wchar.h> (S. 402)
  • C89/C90 Standard (ISO/IEC 9899:1990):
  • 4.1.4 Limits <float.h> and <limits.h>
  • 4.10 ALLGEMEINE HILFSFUNKTIONEN <stdlib.h>
  • 4.13.7 Allgemeine Hilfsfunktionen <stdlib.h>

Siehe auch

C++ Dokumentation für Null-terminierte Multibyte-Zeichenketten