Partager via


Littéraux de caractère C++

Un littéral de caractère est composé d'une constante caractère. Elle est représentée par le caractère entouré de guillemets-apostrophes. Il existe deux genres de littéraux de caractère :

  • Littéraux de caractère étroits de type char, par exemple 'a'

  • Littéraux de caractères étendus de type wchar_t, par exemple L'a'

Le caractère utilisé pour un littéral de caractère peut être tout caractère graphique, à l'exception des caractères réservés tels que le saut de ligne ('\n'), la barre oblique inverse ('\'), le guillemet-apostrophe (') et le guillemet-apostrophe double ("). Les caractères réservés peuvent être spécifiés à l'aide d'une séquence d'échappement.

Séquences d'échappement

Il existe cinq genres de séquences d'échappement : séquence simple, séquence octale, séquence hexadécimale (UTF-8) et séquence Unicode (UTF-16). Les séquences d'échappement peuvent être de l'une des formes suivantes :

Valeur

Séquence d'échappement

saut de ligne

\n

tabulation horizontale

\t

tabulation verticale

\v

retour arrière

\b

retour chariot

\r

saut de page

\f

alerte

\a

barre oblique inverse

\\

point d'interrogation

? ou \?

guillemet simple

\'

guillemet double

\"

caractère Null

\0

octal

\ooo

hexadécimal

\xhhh

Unicode (UTF-8)

\uxxxx

Unicode (UTF-16)

\Uxxxxxxxx

Le code suivant montre des exemples de caractères d'échappement.

#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
}

Pour plus d'informations sur les séquences d'échappement UTF-16 avec \U, voir Littéraux de chaîne C++.

Section spécifique à Microsoft

Une séquence d'échappement octale est une barre oblique inverse suivie de trois chiffres octaux maximum. Le comportement d'une séquence d'échappement octale qui contient plus de trois chiffres est défini par l'implémentation ; cela peut donner des résultats surprenants. Par exemple :

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

Les séquences d'échappement qui contiennent des caractères non octaux sont évaluées comme le dernier caractère non octal. Par exemple :

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

Une séquence d'échappement hexadécimale est une barre oblique inverse suivie du caractère x, suivi d'une séquence de chiffres hexadécimaux. Une séquence d'échappement qui ne contient aucun chiffre hexadécimal provoque l'erreur du compilateur C2153 : « Les constantes hexadécimales doivent comporter au moins un chiffre hexadécimal ». Une séquence d'échappement qui comporte des caractères hexadécimaux et non hexadécimaux est évaluée comme le dernier caractère non hexadécimal. La valeur hexadécimale la plus élevée est 0xff.

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

FIN de la section spécifique à Microsoft

La barre oblique inverse (\) est un caractère de continuation de ligne lorsqu'elle est placée à la fin d'une ligne. Pour qu'une barre oblique inverse apparaisse comme un littéral de caractère, vous devez taper deux barres obliques inverses sur une ligne (\\). Pour plus d'informations sur le caractère de continuation de ligne, voir Phases de traduction.

Caractères Unicode

Les caractères Unicode qui ont un encodage UTF-8 sont représentés avec un préfixe \u. Par exemple :

const wchar_t chr1 = L'\u79c1';

Dans de nombreux cas, il vous suffit d'entrer le caractère souhaité :

const wchar_t chr2 = L'私'; 

Paramètres de l'éditeur Visual C++

Par défaut, l'éditeur de code Visual C++ utilise l'encodage approprié pour vos paramètres régionaux. Dans les versions anglaises de Visual Studio, la page de codes par défaut est 1252. Toutefois, si vous ajoutez un autre genre de caractère, par exemple un caractère Unicode, et que vous enregistrez ensuite le fichier, le message suivant s'affiche : « Impossible d'enregistrer dans la page de codes active certains caractères Unicode contenus dans ce fichier. Voulez-vous réenregistrer ce fichier au format Unicode afin de conserver vos données ? » Vous pouvez enregistrer le fichier avec un autre codage. Vous pouvez aussi modifier la page de codes d'un fichier dans la boîte de dialogue Fichier, Options d'enregistrement avancées. Vous pouvez désactiver la détection automatique des caractères Unicode en décochant « Détecter automatiquement le codage UTF-8 sans signature » dans la page d'options Outils, Options, Éditeur de texte, Général.

Voir aussi

Référence

Littéraux C++