Unicode-Zeichentypen und Literale (C++11)

Aus RAD Studio
Wechseln zu: Navigation, Suche

Nach oben zu C++11-Features - Index

BCC32 implementiert neue Zeichentypen und Zeichenliterale für Unicode. Diese Typen gehören zu den zu BCC32 hinzugefügten C++11-Features.

Zeichentypen char16_t und char32_t

Zwei neue Typen repräsentieren Unicode-Zeichen:

  • char16_t ist ein 16 Bit-Zeichentyp. char16_t ist ein C++-Schlüsselwort. Dieser Typ kann für UTF-16-Zeichen verwendet werden.
  • char32_t ist ein 32 Bit-Zeichentyp. char32_t ist ein C++-Schlüsselwort. Dieser Typ kann für UTF-32-Zeichen verwendet werden.

Der vorhandene Typ wchar_t ist ein Typ für ein Wide-Zeichen in dem Wide-Zeichensatz der Ausführung. Ein wchar_t-Wide-Zeichenliteral beginnt mit dem Großbuchstaben L (z.B. L'c').

Zeichenliterale u'Zeichen' und U'Zeichen'

Es gibt zwei Formen für die Erstellung von Zeichenliteralen der neuen Typen:

  • u'Zeichen' ist ein Literal für ein einzelnes char16_t-Zeichen, wie z.B. u'g'. Ein Mehrzeichenliteral, wie z.B. u'kh', ist nicht wohlgeformt. Der Wert eines char16_t-Literals entspricht seinem ISO 10646 Codepoint-Wert, vorausgesetzt, dass der Codepoint als ein 16-Bit-Wert darstellbar ist. Nur Zeichen in der Basic Multilingual Plane (BMP) können dargestellt werden.
  • U'Zeichen' ist ein Literal für ein einzelnes char32_t-Zeichen, wie z.B. U't'. Ein Mehrzeichenliteral, wie z.B. U'de', ist nicht wohlgeformt. Der Wert eines char32_t-Literals entspricht seinem ISO 10646 Codepoint-Wert.

Multibyte-Zeichenliterale hatten früher nur die Form L'Zeichen' und stellten ein oder mehrere Zeichen des Typs wchar_t dar. Der Wert eines Wide-Zeichenliterals mit einem einzelnen Zeichen ist die Codierung dieses Zeichens im Wide-Zeichensatz der Ausführung.

String-Literale u"UTF-16_string" und U"UTF-32_string"

Es gibt zwei neue Formen für die Erstellung von String-Literalen der neuen Typen:

  • u"UTF-16_string" ist ein String-Literal mit Zeichen des Typs char16_t, z.B. u"string_containing_UTF-16_encoding_characters".
  • u"UTF-32_string" ist ein String-Literal mit Zeichen des Typs char32_t, z.B. U"string_containing_UTF-32_encoding_characters".

Siehe auch