C++
VeröffentlichtRevision 1

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.

C++
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:

C++
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

Mitwirkende 1

Menschen, deren Änderungen in dieser Seite veröffentlicht wurden.

Kommentare 0

Kommentare sind für diese Seite deaktiviert.