Escape sequences
Escape-Sequenzen werden verwendet, um bestimmte Sonderzeichen in String-Literalen und Zeichenliteralen darzustellen.
Die folgenden Escape-Sequenzen sind verfügbar:
|
Escape-Sequenz
|
Beschreibung | Darstellung |
|---|---|---|
| Einfache Escape-Sequenzen | ||
\'
|
Einfaches Anführungszeichen |
Byte
0x27
in ASCII-Kodierung
|
\"
|
Doppeltes Anführungszeichen |
Byte
0x22
in ASCII-Kodierung
|
\?
|
Fragezeichen |
Byte
0x3f
in ASCII-Kodierung
|
\\
|
Backslash |
Byte
0x5c
in ASCII-Kodierung
|
\a
|
Hörbarer Signalton |
Byte
0x07
in ASCII-Kodierung
|
\b
|
Rückschritt |
Byte
0x08
in ASCII-Kodierung
|
\f
|
Seitenvorschub - neue Seite |
Byte
0x0c
in ASCII-Kodierung
|
\n
|
Zeilenvorschub - neue Zeile |
Byte
0x0a
in ASCII-Kodierung
|
\r
|
Wagenrücklauf |
Byte
0x0d
in ASCII-Kodierung
|
\t
|
Horizontaler Tabulator |
Byte
0x09
in ASCII-Kodierung
|
\v
|
Vertikaler Tabulator |
Byte
0x0b
in ASCII-Kodierung
|
| Numerische Escape-Sequenzen | ||
\
nnn
|
Beliebiger Oktalwert |
Codeeinheit
nnn
(1-3 Oktalziffern)
|
\o{
n...
}
(seit C++23)
|
Codeeinheit
n...
(beliebige Anzahl Oktalziffern)
|
|
\x
n...
|
Beliebiger Hexadezimalwert |
Codeeinheit
n...
(beliebige Anzahl Hexadezimalziffern)
|
\x{
n...
}
(seit C++23)
|
||
| Bedingte Escape-Sequenzen [1] | ||
\
c
|
Implementierungsdefiniert | Implementierungsdefiniert |
| Universelle Zeichennamen | ||
\u
nnnn
|
Beliebiger
Unicode
-Wert;
kann mehrere Codeeinheiten ergeben |
Codepunkt
U+
nnnn
(4 Hexadezimalziffern)
|
\u{
n...
}
(seit C++23)
|
Codepunkt
U+
n...
(beliebige Anzahl Hexadezimalziffern)
|
|
\U
nnnnnnnn
|
Codepunkt
U+
nnnnnnnn
(8 Hexadezimalziffern)
|
|
\N{
NAME
}
(seit C++23)
|
Beliebiger Unicode-Zeichen |
Zeichen mit Namen
NAME
(siehe
unten
)
|
-
↑
Bedingte Escape-Sequenzen werden bedingt unterstützt. Das Zeichen
cin jeder bedingten Escape-Sequenz ist ein Mitglied des basic source character set (bis C++23) basic character set (seit C++23) , das nicht das Zeichen nach dem\in einer anderen Escape-Sequenz ist.
InhaltsverzeichnisBereich der universellen Zeichennamen
Hinweise\ 0 ist die am häufigsten verwendete oktale Escape-Sequenz, da sie das abschließende Nullzeichen in null-terminated strings darstellt. Das Zeilenumbruchzeichen \n hat eine besondere Bedeutung bei der Verwendung im Textmodus-I/O : Es wird in die betriebssystemspezifische Zeilenumbruchdarstellung umgewandelt, normalerweise ein Byte oder eine Bytefolge. Einige Systeme kennzeichnen ihre Zeilen stattdessen mit Längenfeldern. Oktale Escape-Sequenzen haben eine Begrenzung von drei Oktalziffern, brechen jedoch am ersten Zeichen ab, das keine gültige Oktalziffer ist, falls dies früher auftritt. Hexadezimale Escape-Sequenzen haben keine Längenbegrenzung und enden beim ersten Zeichen, das keine gültige hexadezimale Ziffer ist. Wenn der durch eine einzelne hexadezimale Escape-Sequenz dargestellte Wert nicht in den Wertebereich des in diesem Zeichenliteral verwendeten Zeichentyps passt ( char , char8_t , (since C++20) char16_t , char32_t , (since C++11) oder wchar_t ), ist das Ergebnis nicht spezifiziert.
Die Fragezeichen-Escape-Sequenz \ ? wird verwendet, um zu verhindern, dass Trigraphs innerhalb von String-Literalen interpretiert werden: Ein String wie "??/" wird kompiliert als " \" , aber wenn das zweite Fragezeichen escaped wird, wie in "? \? /" , wird es zu "??/" . Da Trigraphs aus C++ entfernt wurden, ist die Fragezeichen-Escape-Sequenz nicht länger notwendig. Sie wird zur Kompatibilität mit C++14 (und früheren Revisionen) und C beibehalten. (since C++17)
Beispiel
Diesen Code ausführen
Ausgabe: This is a test She said, "Sells she seashells on the seashore?" FehlerberichteDie folgenden verhaltensändernden Fehlerberichte wurden rückwirkend auf zuvor veröffentlichte C++-Standards angewendet.
Siehe auch
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||