C++

Comment utiliser le littéral de chaîne C++

Comment utiliser le littéral de chaîne C++
Le clavier de l'ordinateur a des caractères imprimés dessus. Lorsque vous appuyez sur une touche, vous voyez le caractère à l'écran. Remarque : l'espace est aussi un caractère. Un littéral de chaîne est une séquence de caractères. Cet article explique comment utiliser les littéraux de chaîne C++. Vous devez connaître les tableaux et les pointeurs C++ pour comprendre cet article.

Caractère littéral

Un caractère littéral est un caractère entre guillemets simples. Donc,

char ident1 = 'A'; char ident2 = 'b'; char ident3 = '4'; caractère ident4 = '6';

sont toutes des définitions différentes des caractères. Notez qu'un chiffre entre guillemets simples est un caractère et non un entier.

Une séquence d'échappement telle que \” (voir ci-dessous) entre guillemets simples, est un caractère. Donc,

char ident1 = '"';

est un personnage.

Un seul symbole entre guillemets n'est pas un caractère ; c'est une chaîne d'un caractère. Donc "A" ou "c" ou "2" n'est pas un caractère mais une chaîne d'un caractère chacun.

La variable d'un caractère peut être réaffectée, plus loin dans le programme, comme suit :

identificateur de caractère = 'x';
ident = 'O';

Pour empêcher la modification d'un caractère affecté à un identifiant, plus loin dans le programme, faites précéder la définition du mot réservé, const, de la manière suivante :

const char ident = 'd';

La variable ident est dite en lecture seule.

Littéral de chaîne

Un littéral de chaîne est une séquence de caractères entre guillemets doubles. Donc,

char ident1[] = "Je t'aime"; char ident2[] = "Je déteste 3 d'entre vous"; char ident3[]
= "nous sommes le monde" ; char ident4[] = "Bonjour tout le monde!";

sont toutes des définitions différentes des littéraux de chaîne. Notez l'utilisation de guillemets doubles. Il n'y a rien de tel qu'une variable ordinaire pour une chaîne. Un littéral de chaîne est un tableau de caractères, où au lieu d'être délimité par , la séquence est délimitée par "". Les caractères ne sont pas séparés par des virgules. Tout nombre supérieur au nombre de caractères dans la chaîne littérale peut être placé entre crochets. Cependant, il est préférable de laisser les crochets vides.

Un seul caractère entre guillemets n'est pas un caractère ; c'est une chaîne d'un caractère. Donc "A" ou "c" ou "2" n'est pas un caractère, mais une chaîne d'un caractère chacun.

Une variable de chaîne ne permet pas la réaffectation du littéral complet, plus tard dans le programme - voir ci-dessous. Cependant, des caractères individuels peuvent être réaffectés - voir ci-dessous.

Citation simple et double en caractère ou littéral

Pour avoir une seule guillemet comme personnage, faites quelque chose comme,

identificateur de caractère = '\'';

Pour avoir un guillemet double comme caractère dans un littéral de chaîne, faites quelque chose comme,

char ident[] = "ab"cd" ;

La barre oblique inverse est utilisée dans une séquence d'échappement, pour éviter les conflits avec les délimiteurs. Pour avoir un guillemet double en tant que caractère, il n'y a pas besoin de la barre oblique inverse : ' ' ' est correct. Pour avoir un guillemet simple dans un littéral de chaîne, il n'y a pas besoin de barre oblique inverse : "ab'cd" est correct.

Étant donné que la barre oblique inverse est utilisée pour échapper à un caractère, elle doit être échappée avec une autre barre oblique inverse lorsqu'elle est utilisée comme caractère ou dans un littéral de chaîne.

Séquence d'échappement

Une séquence d'échappement est l'une des suivantes :

\' " \? \\ \a \b \f \n \r >\t \v

Chaque séquence d'échappement est normalement saisie soit sous forme de caractère entre guillemets simples, soit sous forme de séquence d'échappement entre guillemets doubles.

Opérations avec des personnages

Enchaînement

Lors de la définition, deux littéraux de chaîne peuvent être joints avec un espace comme suit :

char ident[] = "abc" "def" ;
cout << ident << "\n";

La sortie est : abcdef . Cette définition peut être étendue à plus de deux littéraux. Remarque : la déclaration est une définition, pas seulement une affectation. La définition peut même continuer à la ligne suivante avec un espace séparant les lignes comme suit :

char ident[] = "abc" "def"
"ghi" ;
cout << ident << "\n";

La sortie est, abcdefghi.

Remarque : Les caractères ne peuvent pas être concaténés de cette manière, car les guillemets simples du caractère ne peuvent pas avoir plus d'un symbole.

Opérateurs d'égalité

Les mêmes caractères dans la même casse sont égaux. Ils ne sont pas égaux s'ils ne sont pas du même cas. Considérer,

résultat booléen = 'B' == 'B';
cout << result << "\n";

== signifie égal, tandis que = signifie attribué à et non égal. La sortie est 1 pour vrai. Considérer,

résultat booléen = 'B' == 'b';
cout << result << "\n";

La sortie est 0 pour faux. Considérer,

résultat booléen = 'b' == 'c';
cout << result << "\n";

La sortie est 0 pour faux. Considérer,

résultat booléen = 'B' != 'B';
cout << result << "\n";

!= signifie non égal, tandis que = signifie attribué à et non égal. La sortie est 0 pour faux. Considérer,

résultat booléen = 'B' != 'b';
cout << result << "\n";

La sortie est 1 pour vrai. Considérer,

résultat booléen = 'b' != 'c';
cout << result << "\n";

La sortie est 1 pour vrai.

Donc, == et != sont des opérateurs d'égalité.

Opérateurs relationnels

Pour les caractères ordinaires en C++, dans l'ordre croissant, les nombres précèdent les majuscules, qui précèdent les minuscules.

Donc < will return true (1) when the left character is less than the right character. The other relational operators, <=, >, >= sont expliqués de la même manière.

Le littéral de chaîne en tant qu'objet

Le tableau est un pointeur constant vers le début d'une séquence de type de données particulier. De même, la chaîne est un pointeur constant vers le début d'une séquence de caractères. Comparez les définitions suivantes :

int arr[] = 3, 4, 5, 6, 7 ;
char str[] = 'w', 'o', 'm', 'a', 'n' ;
char stri[] = "femme";

Le premier tableau est un tableau d'entiers et a cinq éléments. Les deuxième et troisième tableaux sont des tableaux de caractères avec des noms différents, mais le même nombre d'éléments. Les deuxième et troisième tableaux sont les mêmes, mais pour leurs noms. Le contenu textuel du deuxième tableau est délimité par des accolades ; les caractères sont séparés par des virgules et chaque caractère est entre guillemets simples. Le contenu textuel du troisième tableau est délimité par des guillemets ; les caractères ne sont pas séparés par des virgules et chaque caractère n'est pas entre guillemets simples. Les deuxième et troisième tableaux sont deux manières de produire une chaîne, la troisième étant la meilleure.

arr est un pointeur constant vers le premier élément de son tableau, ce qui signifie que arr pointera toujours vers l'emplacement ayant l'entier, 3 même si la valeur de 3 est modifiée. La taille du tableau, cinq éléments, ne reste pas vraiment constante. Cependant, chacune des valeurs du tableau peut être modifiée.

str est un pointeur constant vers le premier élément de son tableau, ce qui signifie que str pointera toujours vers l'emplacement ayant le caractère 'w' même si la valeur de 'w' est modifiée. La taille du tableau de caractères, cinq éléments, ne reste pas vraiment constante. Cependant, chacune des valeurs du littéral peut être modifiée.

stri est un pointeur constant vers le premier élément de son littéral (tableau), ce qui signifie que stri pointera toujours vers l'emplacement ayant le caractère w même si la valeur de w est modifiée. La taille du littéral de chaîne (tableau), cinq éléments, ne reste pas vraiment constante. Cependant, chacune des valeurs du littéral peut être modifiée.

Qu'est-ce qui est constant dans un tableau ou un littéral de chaîne? L'adresse mémoire du premier élément du tableau ou du littéral reste la valeur du nom (identifiant) du tableau ou du littéral, et ne peut pas être modifiée. Eh bien, la taille du tableau ou du littéral ne reste pas vraiment constante. Chaque valeur du tableau ou du littéral peut être modifiée. Le code suivant montre comment le quatrième élément de chacun des tableaux a été modifié :

int arr[] = 3, 4, 5, 6, 7 ;
char str[] = 'w', 'o', 'm', 'a', 'n' ;
char stri[] = "femme";
arr[3] = 9;
str[3] = 'e';
stri[3] = 'e';
cout << arr[3] << '\n';
cout << str << '\n';
cout << stri << '\n';

La sortie est :

9
femmes
femmes

Notez que les éléments d'un littéral de chaîne défini, comme pour la troisième définition ci-dessus, sont accessibles avec l'index de tableau (indice). La raison de la deuxième ligne de la sortie est donnée ci-dessous.

Indice de définition

Notez que dans les définitions ci-dessus, il n'y a pas d'entier pour l'indice. Lorsque le nombre d'éléments ne peut pas être facilement déterminé par le programmeur, l'entier de l'indice doit être omis. Quoi qu'il en soit, l'entier ne doit pas être inférieur au nombre d'éléments du tableau.

Pour le littéral de chaîne, l'entier doit être supérieur d'au moins 1 au nombre de caractères de la chaîne. En effet, le caractère nul (\0) est toujours ajouté par le compilateur, à la fin d'un tableau qui est une chaîne, délimité par des guillemets doubles. Le caractère nul n'est pas ajouté à la fin du deuxième tableau ci-dessus, car ce n'est pas une chaîne officielle. Le troisième tableau est une chaîne officielle. Le code suivant montre les valeurs d'indice minimales.

int arr[5] = 3, 4, 5, 6, 7 ;
char str[5] = 'w', 'o', 'm', 'a', 'n' ;
car stri[6] = "femme";

Afin de faire de la deuxième définition une chaîne officielle, le caractère nul doit être ajouté comme suit :

int arr[5] = 3, 4, 5, 6, 7 ;
char str[6] = 'w', 'o', 'm', 'a', 'n', '\0' ;
car stri[6] = "femme";

La sortie devrait maintenant être,

9
femmes
femmes

sans la deuxième « femmes ». Notez que l'indice correspondant pour le deuxième tableau est 6, et non 5 comme c'était le cas.

Valeurs littérales constantes

Pour empêcher la modification de tout caractère des guillemets affectés à un identifiant, plus loin dans le programme, faites précéder la définition du mot réservé const de la manière suivante :

const char ident[] = "Je t'aime";

Opérations avec des littéraux de chaîne

Opérations d'égalité

Les opérateurs d'égalité sont == et != . Lorsque les variables (identifiants) de deux chaînes sont comparées, ce sont les pointeurs (adresses) des littéraux qui finissent par être comparés ; C'est faux. Pour comparer des chaînes, les littéraux doivent être comparés, comme dans le code suivant :

bool result = "femme" == "femme";
cout << result << '\n';

La sortie est 1 pour vrai. La comparaison se fait à la manière du dictionnaire, mais avec des chiffres venant en premier dans l'ordre croissant, avant les majuscules, qui viennent avant les minuscules. La sortie du code suivant est 0, pour false.

résultat bool = "femme" != "femme" ;
cout << result << '\n';

Opérateurs relationnels avec des littéraux de chaîne

Les opérateurs relationnels ne fonctionnent pas avec les littéraux de chaîne.

Littéral de chaîne brute

Un littéral de chaîne brut, permet à une chaîne d'être affichée comme tapée, en ignorant les séquences d'échappement et en respectant les nouvelles lignes. Considérez le code suivant :

char str[] = R"(abc\\d efg hij
klmn \n " ' opq
premier)" ;
cout << str << '\n';

La sortie est :

abc\\d efg hij
klmn \n " ' opq
d'abord

Dans le code, le littéral de chaîne brut commence par R, suivi de ” et ( . Il se termine par ) et ".

Types littéraux de chaîne principale C++

carboniser

Le type char est le type C++ d'origine et stocke généralement un caractère sur 8 bits.

char16_t

Cela stocke un caractère en 16 bits.

char32_t

Ceci stocke un caractère en 32 bits.

wchar_t

char16_t et char32_t sont des caractères larges. wchar_t est un caractère large qui est propriétaire et défini par l'implémentation.

Conclusion

Un littéral de caractère est un caractère unique entre guillemets simples. Une séquence d'échappement est un caractère qui peut également être entre guillemets simples. Un littéral de chaîne est une séquence de caractères entre guillemets. Un littéral de chaîne est un tableau de caractères se terminant par \0. Les opérateurs d'égalité et relationnels fonctionnent avec des littéraux de caractère. Les opérateurs d'égalité fonctionnent avec des littéraux de chaîne, mais les opérateurs relationnels ne fonctionnent pas avec des littéraux de chaîne. Les identificateurs de caractères peuvent être utilisés dans les comparaisons, mais les identificateurs de chaîne ne doivent pas être utilisés dans les comparaisons. Un littéral de chaîne brut permet à une chaîne d'être affichée comme tapée, en ignorant les séquences d'échappement et en respectant les nouvelles lignes.

Chrys

Bataille pour Wesnoth 1.13.6 Développement publié
Bataille pour Wesnoth 1.13.6 publiée le mois dernier, est la sixième version de développement de la 1.13.x series et il apporte un certain nombre d'am...
Comment installer League Of Legends sur Ubuntu 14.04
Si vous êtes fan de League of Legends, alors c'est l'occasion pour vous de tester League of Legends. Notez que LOL est pris en charge sur PlayOnLinux ...
Installez le dernier jeu de stratégie OpenRA sur Ubuntu Linux
OpenRA est un moteur de jeu de stratégie en temps réel libre/gratuit qui recrée les premiers jeux Westwood comme le classique Command & Conquer: Red A...