Escape-Sequenzen, Sonderzeichen und Raw Strings
Eine Escape-Sequenz ist eine besondere Schreibweise innerhalb eines Zeichen- oder Stringliterals. Sie beginnt mit dem Backslash \, dem nach links geneigten Schrägstrich. Der normale Schrägstrich / ersetzt ihn nicht.
Escape-Sequenzen, Sonderzeichen und Raw Strings#
Ein- und Ausgabe · Lektion 8 von 60
Voraussetzungen: Ausgabe. Lernziel: Du schreibst Zeilenumbrüche, Anführungszeichen und Dateipfade korrekt.
Eine Escape-Sequenz ist eine besondere Schreibweise innerhalb eines Zeichen- oder Stringliterals. Sie beginnt mit dem Backslash \, dem nach links geneigten Schrägstrich. Der normale Schrägstrich / ersetzt ihn nicht.
Einfache Escape-Sequenzen#
Schreibweise | Bedeutung | Hinweis |
|---|---|---|
\n | Neue Zeile | Für normale Textausgabe |
\t | Horizontaler Tabulator | Zum nächsten Tabstopp, nicht immer vier Leerzeichen |
\r | Wagenrücklauf | Häufig zum Zeilenanfang, löscht nicht automatisch die Zeile |
\b | Rückschritt | Wirkung hängt vom Ausgabegerät ab |
\f | Seitenvorschub | Vor allem für entsprechende Ausgabegeräte |
\v | Vertikaler Tabulator | Terminaldarstellung unterschiedlich |
\a | Alarmzeichen | Ein Ton ist nicht garantiert |
\\ | Ein Backslash | Wichtig in Windows-Pfaden |
\" | Doppeltes Anführungszeichen | Innerhalb von Stringliteralen |
\' | Einfaches Anführungszeichen | Für ein entsprechendes Zeichenliteral |
\? | Fragezeichen | Historische Kompatibilität, normalerweise reicht ? |
Steuerzeichen haben eine Steuerfunktion statt einer sichtbaren Buchstabenform. Das Terminal entscheidet mit, wie ihre Wirkung sichtbar wird. Die Schreibweisen stehen in der Zeichenliteral-Regel des C++-Arbeitsentwurfs.
1#include <iostream>2 3int main() {4 std::cout << "Er sagt: \"Hallo!\"\n";5 std::cout << "C:\\Kurse\\cpp\\main.cpp\n";6 std::cout << "Name\tPunkte\nAda\t12\n";7}Numerische und Unicode-Schreibweisen#
\0 ist das Zeichen mit dem Wert null, nicht die Ziffer '0'. Es ist die kürzeste Form eines oktalen Escapes: \101 beschreibt einen Wert zur Basis acht. \x41 verwendet eine hexadezimale Zahl, also Basis sechzehn mit den Ziffern 0–9 und A–F. Auf ASCII-kompatiblen Systemen bezeichnen beide Beispiele A.
Ein gewöhnliches oktales Escape umfasst höchstens drei Oktalziffern; \x nimmt dagegen alle folgenden Hexadezimalziffern auf. Soll danach ein getrenntes B stehen, trenne die Literale: "\x41" "B". Benachbarte Stringliterale werden verbunden.
\u00E4 und \U0001F600 sind universelle Zeichennamen für Unicode-Codepunkte. Unicode ordnet Zeichen eindeutige Nummern zu; UTF-8 kodiert sie als Bytefolgen. Eine Kodierung legt die Darstellung von Zeichen als Zahlenfolge fest. Ein sichtbares Zeichen kann mehrere Bytes benötigen. Ein schmaler char kann nicht beliebige Unicode-Zeichen allein aufnehmen.
Raw Strings#
Ein Raw-Stringliteral behandelt Backslashes als gewöhnlichen Text:
1#include <iostream>2 3int main() {4 std::cout << R"(C:\Kurse\cpp\main.cpp)" << '\n';5 std::cout << R"(Hier bleibt \n sichtbar.)" << '\n';6}Enthält der Text selbst die Endfolge )", wähle eine eigene Begrenzung, beispielsweise R"TEXT(Inhalt)TEXT".
Übung#
Warum ist "C:\neu\test" kein unveränderter Pfad?
Lösung
\n wird zur neuen Zeile und \t zum Tabulator. Nutze "C:\\neu\\test" oder ein Raw-Stringliteral.
Weiterlernen#
Zurück: Text und Zahlen mit std::cout ausgeben · Kursübersicht · Weiter: Eingaben mit std::cin lesen und prüfen
Kommentare 0
Kommentare sind für diese Seite deaktiviert.