C++ String

C++ fournit les deux types de représentations de chaînes suivants :

  • Chaîne de style C
  • Le type de classe string introduit par C++

Chaîne de style C

C-style strings originated in the C language and continue to be supported in C++. A string is actually a one-dimensional character array,nulcaractère\0terminé par un caractère nul. Par conséquent, une chaîne terminée par un caractère nul contient les caractères qui composent la chaîne.

The following declaration and initialization creates aEXEMPLE. Comme un caractère nul est stocké à la fin du tableau, la taille du tableau de caractères est supérieure au motEXEMPLEIl a un caractère de plus.

char site[7] = {'R', 'U', 'N', 'O', 'O', 'B', '\0'};

Selon les règles d'initialisation de tableau, vous pouvez écrire l'instruction ci-dessus comme suit :

char site[] = "EXAMPLE";

Ce qui suit est la représentation en mémoire des chaînes définies en C/C++ :

C/C++ 中的字符串表示

Actually, you don't need to putnulcaractère à la fin de la constante de chaîne. Lors de l'initialisation du tableau, le compilateur C++ va automatiquement\0le placer à la fin de la chaîne. Essayons d'afficher la chaîne ci-dessus :

Exemple

#include <iostream> using namespace std; int main () { char site[7] = {'R', 'U', 'N', 'O', 'O', 'B', '\0'}; cout << "Tutoriel Rookie :"; cout << site << endl; return 0; }

Lorsque le code ci-dessus est compilé et exécuté, il produit le résultat suivant :

Example: EXAMPLE

C++ dispose d'un grand nombre de fonctions pour manipuler les chaînes terminées par un caractère nul :

Numéro de sérieFonctions et objectif
1strcpy(s1, s2);
Copie la chaîne s2 dans la chaîne s1.
2strcat(s1, s2);
Concatène la chaîne s2 à la fin de la chaîne s1. La concaténation de chaînes peut aussi se faire avec des+nombres, par exemple :
string str1 = "example";
string str2 = "google";
string str = str1 + str2;
3strlen(s1);
Renvoie la longueur de la chaîne s1.
4strcmp(s1, s2);
Si s1 et s2 sont identiques, renvoie 0 ; si s1<s2, la valeur de retour est inférieure à 0 ; si s1>s2, la valeur de retour est supérieure à 0.
5strchr(s1, ch);
Renvoie un pointeur vers la première occurrence du caractère ch dans la chaîne s1.
6strstr(s1, s2);
Renvoie un pointeur vers la première occurrence de la chaîne s2 dans la chaîne s1.

L'exemple suivant utilise certaines des fonctions mentionnées ci-dessus :

Exemple

#include <iostream> #include <cstring> using namespace std; int main () { char str1[13] = "example"; char str2[13] = "google"; char str3[13]; int len ; // copier str1 dans str3 strcpy( str3, str1); cout << "strcpy( str3, str1) : " << str3 << endl; // concaténer str1 et str2 strcat( str1, str2); cout << "strcat( str1, str2): " << str1 << endl; // longueur totale de str1 après concaténation len = strlen(str1); cout << "strlen(str1) : " << len << endl; return 0; }

Lorsque le code ci-dessus est compilé et exécuté, il produit le résultat suivant :

strcpy( str3, str1) : example
strcat( str1, str2): examplegoogle
strlen(str1) : 12

La classe String en C++

La bibliothèque standard C++ fournitstringun type de classe qui prend en charge toutes les opérations ci-dessus et ajoute également de nombreuses fonctionnalités. Nous allons découvrir cette classe dans la bibliothèque standard C++, mais pour l'instant regardons d'abord l'exemple suivant :

Vous ne comprenez peut-être pas encore pleinement cet exemple, car jusqu'à présent nous n'avons pas abordé les classes et les objets. Pour l'instant, vous pouvez simplement le parcourir brièvement, puis y revenir plus tard pour le comprendre après avoir assimilé les concepts de la programmation orientée objet.

Exemple

#include <iostream> #include <string> using namespace std; int main () { string str1 = "example"; string str2 = "google"; string str3; int len ; // copier str1 dans str3 str3 = str1; cout << "str3 : " << str3 << endl; // concaténer str1 et str2 str3 = str1 + str2; cout << "str1 + str2 : " << str3 << endl; // longueur totale de str3 après concaténation len = str3.size(); cout << "str3.size() : " << len << endl; return 0; }

Lorsque le code ci-dessus est compilé et exécuté, il produit le résultat suivant :

str3 : example
str1 + str2 : examplegoogle
str3.size() :  12
autres extensions