Constantes caractère C++
Les constantes caractère sont un ou plusieurs membres du jeu de caractères source de base, le jeu de caractères dans lequel un programme est écrit, entouré de guillemets simples (').Ils sont utilisés pour représenter les caractères dans le jeu de caractères d'exécution de base, le jeu de caractères sur l'ordinateur où le programme s'exécute.
Spécifique à Microsoft
Pour le compilateur Microsoft C/C++, la source et les jeux de caractères d'exécution sont les deux ASCII.
Le jeu de caractères de base de la source se compose de 96 caractères : l'espace ; les caractères de contrôle qui représentent la tabulation horizontale, la tabulation verticale, le chargement de la page, et le saut de ligne ; et 91 caractères suivants :
abcdefghijklmnopqrstuvwxyz
ABCDEFGHIJKLMNOPQRSTUVWXYZ
0123456789
_{} [] (#) <>% : ;. ? *+-/^&|~ ! =, \ » '
Le jeu de caractères d'exécution de base contient des caractères de caractères de base de source définis, ainsi que les caractères de contrôle qui représentent l'alerte, le retour arrière, le retour chariot, et le null.
détail de FIN Microsoft
Il existe trois types de constantes caractère :
Constantes caractère normales
constantes de Multicharacter
Constantes à caractère élargi
[!REMARQUE]
Utilisez des constantes à caractère élargi à la place des constantes de multicharacter pour garantir la portabilité.
Les constantes caractère sont spécifiées comme un ou plusieurs caractères placés entre guillemets simples.Par exemple :
char ch = 'x'; // Specify normal character constant.
int mbch = 'ab'; // Specify system-dependent
// multicharacter constant.
wchar_t wcch = L'ab'; // Specify wide-character constant.
notez qu' mbch est de type int.S'il s'agissait déclarés comme type char, le deuxième octet ne serait pas conservé.Une constante de multicharacter a quatre caractères explicites ; spécifier plus de quatre génère un message d'erreur.
Les caractères à une constante de caractère peuvent être tous les caractères graphiques dans le jeu de caractères de source, à l'exception de le saut de ligne, la barre oblique inverse \, le guillemet simple 'et le guillemet « , ou peuvent être spécifiés à l'aide d'une séquence d'échappement.Il existe trois types de séquences d'échappement : séquences d'échappement simples, octales et hexadécimales.
Les séquences d'échappement simples peuvent être l'un des éléments suivants :
\' \" \? \\
\a \b \f \n \r \t \v
Une séquence d'échappement octale est une barre oblique inverse suivie d'une séquence de 3 chiffres octaux.
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.
Microsoft C++ prend en charge la normale, le multicharacter, et les constantes à caractères larges.Utilisez des constantes à caractère élargi pour spécifier des membres du jeu de caractères d'exécution étendu (par exemple, pour prendre en charge une application internationale).Les constantes caractère normales ont le type char, les constantes de multicharacter ont le type int, et les constantes à caractères larges ont le type wchar_t.(Le type wchar_t est défini dans les fichiers Include standard STDDEF.H, STDLIB.H, et STRING.H.Les fonctions à caractère élargi, toutefois, sont prototypes uniquement dans STDLIB.H.)
La seule différence dans la spécification entre les constantes normales et à caractère élargi est que les constantes à caractère élargi sont précédées par la lettre L.Par exemple :
char schar = 'x'; // Normal character constant
wchar_t wchar = L'\x8119'; // Wide-character constant
Le tableau suivant répertorie les caractères réservés ou nongraphic qui dépendent du système ou non - autorisé dans les constantes caractère.Ces caractères doivent être représentés avec les séquences d'échappement.
C++ réservé ou caractères de Nongraphic
Caractère |
ASCII Représentation |
ASCII Valeur |
séquence d'échappement |
---|---|---|---|
Saut de ligne |
LE NL (SAUT DE LIGNE) |
10 ou 0x0a |
\n |
Tabulation horizontale |
HT |
9 |
\t |
Tabulation verticale |
VT |
11 ou 0x0b |
\v |
Retour arrière |
Q128641 BS |
8 |
\b |
Retour chariot |
CR |
13 ou 0x0d |
\r |
Saut de page |
FF |
12 ou 0x0c |
\f |
Alerte |
CARACTÈRE De CALL |
7 |
\a |
Barre oblique inverse |
\ |
92 ou 0x5c |
\\ |
point d'interrogation |
? |
63 ou 0x3f |
\? |
Guillemet simple |
' |
39 ou 0x27 |
\' |
Guillemet double (") |
" |
34 ou 0x22 |
\" |
nombre octal |
ooo |
— |
\ooo |
nombre hexadécimal |
hhh |
— |
\ xhhh |
caractère Null |
NUL |
0 |
\0 |
Si le caractère suivant la barre oblique inverse ne spécifie pas une séquence d'échappement légal, le résultat est implémentation définie.Dans Microsoft C++, le caractère suivant la barre oblique inverse est pris littéralement, comme si l'échappement n'était pas présente, et d'un avertissement de niveau 1 (« séquence d'échappement non reconnu ») est publié.
Les séquences d'échappement octales, indiquées dans la forme \ooo, se composent d'une barre oblique inverse et d'un, deux, ou trois caractères octaux.Les séquences d'échappement hexadécimales, indiquées dans la forme \ xhhh, incluent des caractères \x suivi d'une séquence de chiffres hexadécimaux.Contrairement aux constantes octales d'échappement, il n'existe aucune limite du nombre de chiffres hexadécimaux dans une séquence d'échappement.
Les séquences d'échappement octales sont terminées par le premier caractère qui n'est pas un chiffre octal, ou lorsque trois caractères sont identifiés.Par exemple :
wchar_t och = L'\076a'; // Sequence terminates at a
char ch = '\233'; // Sequence terminates after 3 characters
De même, les séquences d'échappement hexadécimales se terminent au premier caractère qui n'est pas un chiffre hexadécimal.Étant donné que les chiffres hexadécimaux incluent les lettres a via f (et A via F), assurez -vous que la séquence d'échappement se termine au chiffre prévu.
Étant donné que le guillemet simple (') englobe les constantes caractère, utilisez la séquence d'échappement \' pour représenter des guillemets simples placé.Le guillemet double (") peut être représenté sans séquence d'échappement.La barre oblique inverse (\) est un caractère de continuation de ligne une fois placé à la fin d'une ligne.Si vous souhaitez une barre oblique inverse pour apparaître dans une constante caractère, vous devez les barres obliques inverses de type deux dans une ligne (\\).(Consultez phases de traduction dans la référence de préprocesseur pour plus d'informations sur la continuation de ligne.)