Constantes chaîne

De RAD Studio
Aller à : navigation, rechercher

Remonter à Présentation des constantes - Index

Littéraux chaîne

Les constantes chaîne, aussi appelées littéraux chaîne, constituent une catégorie spéciale de constantes utilisée pour traiter des séquences fixes de caractères. Un littéral chaîne est du type de données array-of- const char et de classe de stockage static, et est écrit sous la forme d'une séquence de plusieurs caractères délimitée par des guillemets :

"This is literally a string!"

La chaîne null (vide) s'écrit "".

Les caractères à l'intérieur des guillemets peuvent inclure des séquences d'échappement. Par exemple, ce code :

"\t\t\"Name\"\\\tAddress\n\n"

s'imprime comme suit :

               "Name"\        Address


"Name" est précédé de deux tabulations ; Address d'une seule. La ligne est suivie de deux sauts de ligne. La séquence \" fournit les guillemets intérieurs.

Si vous compilez avec l'option -A pour la compatibilité ANSI, la séquence caractère d'échappement "\\" est convertie en "\" par le compilateur.

Une chaîne littérale est stockée en interne sous la forme de la séquence de caractères indiquée, plus un caractère null final ('\0'). Une chaîne null est stockée sous forme d'un caractère '\0' unique.

Quatre types de littéraux chaîne dans C++11

Par défaut, les littéraux chaîne sont des chaînes ANSI contenant des caractères char. Vous pouvez utiliser les préfixes L, u et U, devant les littéraux chaîne, pour spécifier que les littéraux chaîne devraient contenir des caractères étendus ou des caractères Unicode (Littéraux et types de caractères Unicode (C++11)) :

  • Un littéral chaîne précédé immédiatement par un L est une chaîne de caractères étendus contenant des caractères du type de données wchar_t. Quand wchar_t est utilisé dans un programme C, c'est un type défini dans le fichier d'en-tête stddef.h. Dans les programmes C++, wchar_t est un mot clé. L'allocation de mémoire pour les chaînes wchar_t est de deux octets par caractère. La valeur d'un caractère étendu unique est l'encodage de ce caractère dans le jeu de caractères étendus d'exécution.
  • Dans les programmes C++11, un littéral chaîne précédé immédiatement par un caractère u est une chaîne de caractères Unicode contenant des caractères du type de données char16_t. Dans les programmes C++11, char16_t est un mot clé déclarant un type de caractère 16 bits. char16_t définit l'encodage de caractères UTF-16 pour Unicode. L'allocation de mémoire pour les caractères char16_t est de deux ou quatre octets par caractère.
  • Dans les programmes C++11, un littéral chaîne précédé immédiatement par un caractère U est une chaîne de caractères Unicode contenant des caractères du type de données char32_t. Dans les programmes C++11, char32_t est un mot clé déclarant un type de caractère 32 bits. char32_t définit l'encodage de caractères UTF-32 pour Unicode. L'allocation de mémoire pour les caractères char32_t est de quatre octets par caractère.


Ainsi, dans les programmes C++11, nous pouvons utiliser les quatre types de littéraux chaîne suivants :

  • "chaîne ANSI" - c'est un littéral chaîne ANSI contenant des caractères char ;
  • L"chaîne de caractères étendus" - ce littéral chaîne contient des caractères wchar_t ;
  • u"chaîne UTF-16" - ce littéral chaîne contient des caractères Unicode char16_t dans l'encodage UTF-16 ;
  • U"chaîne UTF-32" - ce littéral chaîne contient des caractères Unicode char32_t dans l'encodage UTF-32 ;

Concaténation de littéraux chaîne

Vous pouvez utiliser la barre oblique inversée (\) en tant que caractère de continuation pour étendre une constante chaîne sur plusieurs lignes :

puts("This is really \
a one-line string");

Les littéraux chaîne adjacents séparés seulement par des espaces sont concaténés pendant la phase d'analyse. Dans l'exemple suivant :

#include <stdio.h>
int main() {
   char    *p;
   p = "This is an example of how the compiler "
     " will \nconcatenate very long strings for you"
     " automatically, \nresulting in nicer" " looking programs.";
   printf(p);
   return(0);
}

La sortie du programme est

This is an example of how the compiler will
concatenate very long strings for you automatically,
resulting in nicer looking programs.


Voir aussi