Comment utiliser C ++ String littéral

Comment utiliser C ++ String littéral
Le clavier de l'ordinateur a des caractères imprimés dessus. Lorsque vous appuyez sur une touche, vous voyez le personnage à l'écran. Remarque: l'espace est également un personnage. Un littéral de cordes 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 pointeurs C ++ pour comprendre cet article.

Caractère littéral

Un personnage littéral est un personnage en citations uniques. Donc,

char identi1 = 'a'; char identi2 = 'b'; char identité = '4'; char identi 4 = '6';

sont toutes des définitions différentes des caractères. Notez qu'un chiffre en citations simples est un personnage et non un entier.

Une séquence d'évasion telle que \ ”(voir ci-dessous) en citations simples, est un personnage. Donc,

char identi1 = '"';

est un personnage.

Un seul symbole en double-quotes n'est pas un caractère; C'est une chaîne d'un seul caractère. Donc «A» ou «C» ou «2» n'est pas un personnage mais est une chaîne d'un seul personnage.

La variable d'un char peut être réaffectée, plus tard dans le programme, comme suit:

char identi = 'x';
identifier = 'y';

Pour empêcher un personnage attribué à un identifiant d'être modifié, plus tard dans le programme, précédemment la définition avec le mot réservé, const, comme suit:

const char identi = 'd';

La variable, IDD est censée être en lecture seule.

Corde littérale

Un littéral de cordes est une séquence de caractères en doubles citations. Donc,

char identi1 [] = "Je t'aime"; char identi2 [] = "Je déteste 3 d'entre vous"; char identi []
= "Nous sommes le monde"; char identi 4 [] = "Hello World!"

sont toutes des définitions différentes des littéraux de cordes. Remarquez l'utilisation de doubles-quottes. 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 de délimiter avec , la séquence est délimitée avec "". Les caractères ne sont pas séparés par des virgules. N'importe quel nombre supérieur au nombre de caractères dans le littéral de cordes peut être placé dans les crochets. Cependant, il vaut mieux laisser les crochets vides.

Un seul caractère en double-quotes n'est pas un caractère; C'est une chaîne d'un seul caractère. Donc «a» ou «c» ou «2» n'est pas un personnage, mais une chaîne d'un seul personnage.

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

Citation simple et double dans le caractère ou littéral

Pour avoir une seule citation en tant que personnage, faites quelque chose comme,

char identi = '\' ';

Pour avoir une double citation en tant que personnage dans un littéral de cordes, faites quelque chose comme,

char identi [] = "ab" cd ";

La barre oblique inverse est utilisée dans une séquence d'évasion, pour éviter les conflits avec les délimiteurs. Pour avoir une double citation en tant que personnage, il n'y a pas besoin de barreaux arrière: '' '. Pour avoir une seule citation dans un littéral de cordes, il n'y a pas besoin de barreaux arrière: "Ab'cd" est bien.

Étant donné que l'arrière-plan est utilisée pour échapper à un personnage, il doit être échappé avec une autre barre arrière lorsqu'il est utilisé comme caractère ou dans un littéral de cordes.

Séquence d'échappement

Une séquence d'évasion est l'une des:

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

Chaque séquence d'évasion est normalement tapée soit comme un caractère dans des citations simples, soit comme une séquence d'évasion dans les doubles quotidiens.

  • \ ': est utilisé comme un seul caractère de devis, dans des citations uniques.
  • \ ”: Est utilisé comme caractère à double devis, dans un littéral.
  • \? : depuis ? est un personnage réservé, il doit être échappé dans un littéral.
  • pect.
  • \ A: sonne une sonnette d'alarme une fois, lorsqu'elle est utilisée comme caractère ou dans une chaîne littérale.
  • \ b: Résultats en tant qu'espace arrière dans l'écran dans une chaîne littérale, enlevant le caractère précédent.
  • \ f: provoque la page suivante à l'imprimante lorsqu'elle est utilisée comme caractère ou dans un littéral.
  • \ r: renvoie le curseur, où le caractère suivant doit être imprimé, mais dans la ligne actuelle.
  • \ n: renvoie le curseur au début de la ligne suivante ou juste à la ligne suivante, selon le système d'exploitation.
  • \ T: crée un onglet horizontal.
  • \ v: crée un onglet vertical.

Opérations avec des personnages

Enchaînement

À la définition, deux littéraux de cordes peuvent être joints à l'espace comme suit:

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

La sortie est: ABCDEF . Cette définition peut être étendue à plus de deux littéraux. Remarque: l'instruction 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 identi [] = "abc" "def"
"Ghi";
couter << ident << "\n";

La sortie est, ABCDEFGHI.

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

Opérateurs d'égalité

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

bool result = 'b' == 'b';
couter << result << "\n";

== signifie égaux, tandis que = moyens attribués à et non égaux. La sortie est 1 pour True. Considérer,

bool result = 'b' == 'b';
couter << result << "\n";

La sortie est 0 pour false. Considérer,

bool result = 'b' == 'c';
couter << result << "\n";

La sortie est 0 pour false. Considérer,

Bool Result = 'B' != 'B';
couter << result << "\n";

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

Bool Result = 'B' != 'b';
couter << result << "\n";

La sortie est 1 pour True. Considérer,

Bool Result = 'B' != 'c';
couter << result << "\n";

La sortie est 1 pour True.

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

Opérateurs relationnels

Pour les caractères ordinaires en C ++, dans l'ordre croissant, les chiffres viennent avant les lettres majuscules, qui se présentent avant les lettres 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.

La chaîne littérale comme un objet

Le tableau est un pointeur constant vers le début d'une séquence de type de données particulière. 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 éventail d'INTS 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 texte 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 en citations uniques. Le contenu texte du troisième tableau est délimité par des citations doubles; Les caractères ne sont pas séparés par des virgules et chaque caractère n'est pas en citations uniques. Les deuxième et troisième tableaux sont deux façons de produire une chaîne, la troisième voie étant la meilleure façon.

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 des 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 de la chaîne littérale (tableau), cinq éléments, ne reste pas vraiment constante. Cependant, chacune des valeurs du littéral peut être modifiée.

Ce qui est constant dans un tableau ou un littéral de cordes? 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é. Eh bien, la taille du tableau ou du littéral ne reste pas vraiment constante. Chaque valeur dans le tableau ou 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';
couter << arr[3] << '\n';
couter << str << '\n';
couter << 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, peuvent être accessibles avec l'index du 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 dans le tableau.

Pour la chaîne littérale, l'entier doit être d'au moins 1 supérieur au nombre de caractères dans la chaîne. En effet. 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 minimum.

int arr [5] = 3, 4, 5, 6, 7;
char str [5] = 'w', 'o', 'm', 'a', 'n';
char 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';
char stri [6] = "femme";

La sortie devrait maintenant être,

9
femmes
femmes

Sans les deuxième «femmes». Notez que l'indice correspondant pour le deuxième tableau est de 6, et non 5 tel qu'il était.

Valeurs littérales constantes

Pour empêcher tout caractère dans les doubles guillemets attribués à un identifiant d'être modifiés, plus tard dans le programme, précédemment la définition avec le mot réservé, const, comme suit:

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

Opérations avec des littéraux de cordes

Opérations d'égalité

Les opérateurs d'égalité sont == et != . Lorsque des variables (identificateurs) 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 les chaînes, les littéraux doivent être comparés, comme dans le code suivant:

Bool result = "femme" == "femme";
couter << result << '\n';

La sortie est 1 pour True. La comparaison est effectuée à la manière du dictionnaire, mais avec des chiffres venant en premier dans l'ordre croissant, avant les lettres majuscules, qui se présentent avant les lettres minuscules. La sortie du code suivant est 0, pour false.

Bool result = "femme" != "femme";
couter << result << '\n';

Opérateurs relationnels avec des littéraux de cordes

Les opérateurs relationnels ne travaillent pas avec les littéraux de cordes.

Litterale de cordes brutes

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

Char Str [] = R "(ABC \\ D EFG HIJ
klmn \ n "'opq
RST) ";
couter << str << '\n';

La sortie est:

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

Dans le code, le littéral de la chaîne brute 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 stockerait généralement un caractère en 8 bits.

char16_t

Cela stocke un personnage en 16 bits.

char32_t

Cela stocke un personnage en 32 bits.

wchar_t

char16_t et char32_t sont des caractères larges. WCHAR_T est un grand caractère qui est propriétaire et défini.

Conclusion

Un personnage littéral est un seul caractère en citations uniques. Une séquence d'évasion est un caractère qui peut également être en citations uniques. Un littéral de cordes est une séquence de caractères en double-quot. Un littéral de cordes est un tableau de caractères qui se termine par \ 0. L'égalité et les opérateurs relationnels travaillent avec des littéraux de caractère. Les opérateurs d'égalité travaillent avec des littéraux de cordes, mais les opérateurs relationnels ne fonctionnent pas avec des littéraux de cordes. Les identifiants de caractère peuvent être utilisés dans les comparaisons, mais les identificateurs de cordes ne doivent pas être utilisés dans les comparaisons. Un littéral de chaîne brute permet à une chaîne d'être affichée comme tapée, ignorant les séquences d'évasion et respectant Newlines.