Freigeben über


C++-Zeichenliterale

Ein Zeichenfolgenliteral besteht aus einem konstanten Zeichen. Es wird durch das Zeichen dargestellt, das von einfachen Anführungszeichen eingeschlossen ist. Es gibt zwei Arten von Zeichenliteralen:

  • Zum Beispiel schmale Zeichenliterale vom Typ char 'a'

  • Zum Beispiel breite Zeichenliterale vom Typ wchar_t L'a'

Zeichenliterale können beliebige Schriftzeichen verwenden, mit Ausnahme von reservierten Zeichen wie Zeilenumbruch ('\n'), umgekehrter Schrägstrich ('\'), einfaches Anführungszeichen (') und doppeltes Anführungszeichen ("). Reservierte Zeichen können mithilfe einer Escapesequenz angegeben werden.

Escapesequenzen

Es gibt fünf Arten von Escapesequenzen: einfache, oktale, hexadezimale, Unicode (UTF-8) und Unicode (UTF-16). Escapesequenzen können folgendermaßen aussehen:

Wert

Escapesequenz

Zeilenumbruch

\n

Horizontaler Tabulator

\t

Vertikaler Tabulator

\v

Rückschritt

\b

Wagenrücklauf

\r

Seitenvorschub

\f

Warnung

\a

Umgekehrter Schrägstrich

\\

Fragezeichen

? oder \?

Einfaches Anführungszeichen

\'

Doppeltes Anführungszeichen

\"

das Nullzeichen

\0

Oktal

\ooo

Hexadezimal

\xhhh

Unicode (UTF-8)

\uxxxx

Unicode (UTF-16)

\Uxxxxxxxx

Der folgende Code zeigt einige Beispiele für Escapezeichen.

#include <iostream>
using namespace std;

int main() {
    char newline = '\n';
    char tab = '\t';
    char backspace = '\b';
    char backslash = '\\';
    char nullChar = '\0';

    cout << "Newline character: " << newline << "ending" << endl; // Newline character:
                                                                  //  ending
    cout << "Tab character: " << tab << "ending" << endl; // Tab character : ending
    cout << "Backspace character: " << backspace << "ending" << endl; // Backspace character : ending
    cout << "Backslash character: " << backslash << "ending" << endl; // Backslash character : \ending
    cout << "Null character: " << nullChar << "ending" << endl; //Null character:  ending
}

Weitere Informationen zu UTF-16-Escapesequenzen mit \U finden Sie unter C++-Zeichenfolgenliterale.

Microsoft-spezifisch

Eine oktale Escapesequenz ist ein umgekehrter Schrägstrich gefolgt von einer Sequenz von bis 3 Oktalziffern. Das Verhalten oktaler Escapesequenzen, die mehr als drei Ziffern enthalten, wird durch die Implementierung definiert; sie können überraschende Ergebnisse zurückgeben. Beispiel:

char c1 = '\100';     // char '@'
char c2 = '\1000';   // char '0' 

Escapesequenzen, die nicht oktale Zeichen enthalten, werden als letztes nicht oktales Zeichen ausgewertet. Beispiel:

char c3 = '\009'// char '9'
char c4 = '\089'     // char '9'
char c5 = '\qrs'     // char 's'

Eine hexadezimale Escapesequenz ist ein umgekehrter Schrägstrich, gefolgt von dem Zeichen x, gefolgt von einer Sequenz von hexadezimalen Zeichen. Eine Escapesequenz, die keine Hexadezimalziffern enthält, verursacht den Compilerfehler C2153 "Hexadezimale Konstanten müssen mindestens eine hexadezimale Ziffer enthalten". Eine Escapesequenz, die hexadezimale und nicht hexadezimale Zeichen enthält, wird als das letzte nicht hexadezimale Zeichen ausgewertet. Der höchste Hexadezimalwert ist 0xff.

char c1 = '\x0050';  // char 'P'
char c2 = '\x0pqr';  // char 'r'

Ende Microsoft-spezifisch

Der umgekehrte Schrägstrich (\) ist ein Zeilenfortsetzungszeichen, wenn er am Ende einer Zeile platziert wird. Wenn ein umgekehrter Schrägstrich als Zeichenliteral angezeigt werden soll, müssen Sie zwei umgekehrte Schrägstriche in einer Zeile (\\) eingeben. Weitere Informationen zum Zeilenfortsetzungszeichen finden Sie unter Phasen der Übersetzung.

Unicode-Zeichen

Unicode-Zeichen, die eine UTF-8-Codierung aufweisen, werden mit einem \u-Präfix dargestellt. Beispiel:

const wchar_t chr1 = L'\u79c1';

In vielen Fällen können Sie einfach das gewünschte Zeichen eingeben:

const wchar_t chr2 = L'私'; 

Editoreinstellungen von Visual C++

Der Code-Editor in Visual C++ verwendet standardmäßig die Codierung, die für das Gebietsschema geeignet ist. In der US-englischen Version von Visual Studio ist die 1252 die Stadardcodepage. Wenn Sie jedoch eine andere Art von Zeichen hinzufügen, beispielsweise ein Unicode-Zeichen, und die Datei speichern, wird die folgende Meldung angezeigt: "Einige Unicode-Zeichen in dieser Datei können nicht in der aktuellen Codepage gespeichert werden. Soll diese Datei noch einmal im Unicodeformat gespeichert werden, sodass die Daten erhalten bleiben?" Sie können die Datei mit einer anderen Codierung speichern. Sie können die Codepage für eine Datei auch im Dialogfeld Datei, Erweiterte Speicheroptionen ändern. Sie können die automatische Erkennung von Unicode-Zeichen deaktivieren, indem Sie "UTF-8-Codierung ohne Signatur automatisch erkennen" auf der Optionsseite Extras, Optionen, Text-Editor, Allgemein deaktivieren.

Siehe auch

Referenz

C++-Literale