String-Konstanten
Nach oben zu Konstanten (Übersicht) - Index
Inhaltsverzeichnis
String-Literale
String-Konstanten (oder String-Literale) sind eine spezielle Konstantenkategorie für feste Zeichenfolgen. Eine String-Konstante hat den Datentyp array-of-const char und die Speicherklasse static. Derartige Konstanten setzen sich aus einer Reihe beliebig vieler Zeichen in Anführungszeichen zusammen:
"This is literally a string!"
Der Null-String (leerer String) wird durch ""
gekennzeichnet.
Die Zeichen, die innerhalb der Anführungszeichen stehen, können auch Escape-Sequenzen enthalten. Der Quelltext
"\t\t\"Name\"\\\tAddress\n\n"
gibt Folgendes aus:
"Name"\ Address
Vor "Name"
stehen zwei Tabulatoren, vor Address
ein Tabulator. Danach folgen zwei neue Zeilen. \"
sorgt für die Ausgabe der Anführungszeichen im String.
Die Escape-Zeichensequenz "\\"
wird von dem Compiler in "\"
übersetzt, wenn Sie mit der Option -A für ANSI compilieren.
String-Konstanten werden intern als die gegebene Zeichensequenz plus einem abschließenden Null-Zeichen ('\0'
) abgespeichert. Ein leerer String wird als ein '\0'
-Zeichen abgelegt.
Vier String-Literaltypen in C++0x
String-Literale sind per Vorgabe ANSI-Strings mit char-Zeichen. Mit den Präfixen L
, u
und U
können Sie festlegen, dass String-Literale Wide-Zeichen oder Unicode-Zeichen (Unicode-Zeichentypen und Literale (C++11)) enthalten sollen:
- Ein String-Literal, dem ein L unmittelbar vorangeht, ist ein Wide-Zeichen-String mit Zeichen des Datentyps wchar_t. Falls wchar_t in einem C-Programm verwendet wird, stellt es einen in der Header-Datei stddef.h definierten Typ dar. In C++-Programmen ist wchar_t ein Schlüsselwort. Die Speicherzuweisung für wchar_t-Strings liegt bei zwei Byte pro Zeichen. Der Wert eines einzelnen Wide-Zeichens ist die Codierung dieses Zeichens im Wide-Zeichensatz der Ausführung.
- In C++0x-Programmen ist ein String-Literal, dem ein L unmittelbar vorangeht, ein Unicode-Zeichen-String mit Zeichen des Datentyps char16_t. In C++0x-Programmen ist char16_t ein Schlüsselwort, das einen 16-Bit-Zeichentyp deklariert. char16_t definiert die UTF-16-Zeichencodierung für Unicode. Die Speicherzuweisung für char16_t-Zeichen liegt bei zwei oder vier Byte pro Zeichen.
- In C++0x-Programmen ist ein String-Literal, dem ein U unmittelbar vorangeht, ein Unicode-Zeichen-String mit Zeichen des Datentyps char32_t. In C++0x-Programmen ist char32_t ein Schlüsselwort, das einen 32-Bit-Zeichentyp deklariert. char32_t definiert die UTF-32-Zeichencodierung für Unicode. Die Speicherzuweisung für char32_t-Strings liegt bei vier Byte pro Zeichen.
Das heißt, in C++0x-Programmen können Sie die folgenden vier Typen für String-Literale verwenden:
"ANSI string"
- ein ANSI-String-Literal mit char-Zeichen
L"Wide-character string"
- String-Literal mit wchar_t-Zeichen
u"UTF-16 string"
- String-Literal mit char16_t-Unicode-Zeichen in der UTF-16-Codierung
U"UTF-32 string"
- String-Literal mit char32_t-Unicode-Zeichen in der UTF-32-Codierung
Verketten von String-Literalen
Durch Verwendung des Backslash (\
) können Sie eine String-Konstante auf zwei Zeilen aufteilen:
puts("This is really \ a one-line string");
String-Konstanten, die nur durch Whitespace getrennt sind, werden während der Analyse verkettet. Das Beispiel
#include <stdio.h> int main() { char *p; p = "This is an example of how the compiler " " will \nconcatenate very long strings for you" " automatically, \nresulting in nicer" " looking programs."; printf(p); return(0); }
liefert folgenden Ausdruck:
This is an example of how the compiler will concatenate very long strings for you automatically, resulting in nicer looking programs.
Siehe auch
- Konstanten
- Integerkonstanten
- Gleitkommakonstanten
- Zeichenkonstanten
- Die drei char-Typen
- Escape-Sequenzen
- Wide-Character- und Mehr-Zeichenkonstanten
- Unicode-Zeichentypen und Literale (C++11)
- Aufzählungskonstanten
- Konstanten und ihre interne Darstellung
- Interne Darstellung numerischer Typen
- Konstantenausdrücke