Chaînes C++
C++ fournit les deux types suivants de représentations de chaînes −
- La chaîne de caractères de style C.
- Le type de classe de chaîne introduit avec le C++ standard.
La chaîne de caractères de style C
La chaîne de caractères de style C provient du langage C et continue d'être prise en charge dans C++. Cette chaîne est en fait un tableau unidimensionnel de caractères qui se termine par un null caractère '\0'. Ainsi, une chaîne terminée par un caractère nul contient les caractères qui composent la chaîne suivis d'un null .
La déclaration et l'initialisation suivantes créent une chaîne composée du mot "Hello". Pour contenir le caractère nul à la fin du tableau, la taille du tableau de caractères contenant la chaîne est un de plus que le nombre de caractères du mot "Bonjour".
char greeting[6] = {'H', 'e', 'l', 'l', 'o', '\0'};
Si vous suivez la règle d'initialisation du tableau, vous pouvez écrire l'instruction ci-dessus comme suit −
char greeting[] = "Hello";
Voici la présentation de la mémoire de la chaîne définie ci-dessus en C/C++ −

En fait, vous ne placez pas le caractère nul à la fin d'une constante de chaîne. Le compilateur C++ place automatiquement le '\0' à la fin de la chaîne lorsqu'il initialise le tableau. Essayons d'imprimer la chaîne susmentionnée −
Démo en direct#include <iostream> using namespace std; int main () { char greeting[6] = {'H', 'e', 'l', 'l', 'o', '\0'}; cout << "Greeting message: "; cout << greeting << endl; return 0; }
Lorsque le code ci-dessus est compilé et exécuté, il produit le résultat suivant −
Greeting message: Hello
C++ prend en charge un large éventail de fonctions qui manipulent des chaînes à terminaison nulle −
Sr.No | Fonction et objectif |
---|---|
1 | |
2 | |
3 | |
4 | |
5 | |
6 |
L'exemple suivant utilise quelques-unes des fonctions mentionnées ci-dessus −
Démo en direct#include <iostream> #include <cstring> using namespace std; int main () { char str1[10] = "Hello"; char str2[10] = "World"; char str3[10]; int len ; // copy str1 into str3 strcpy( str3, str1); cout << "strcpy( str3, str1) : " << str3 << endl; // concatenates str1 and str2 strcat( str1, str2); cout << "strcat( str1, str2): " << str1 << endl; // total lenghth of str1 after concatenation 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) : Hello strcat( str1, str2): HelloWorld strlen(str1) : 10
La classe String en C++
La bibliothèque C++ standard fournit une chaîne type de classe qui prend en charge toutes les opérations mentionnées ci-dessus, ainsi que beaucoup plus de fonctionnalités. Vérifions l'exemple suivant −
Démo en direct#include <iostream> #include <string> using namespace std; int main () { string str1 = "Hello"; string str2 = "World"; string str3; int len ; // copy str1 into str3 str3 = str1; cout << "str3 : " << str3 << endl; // concatenates str1 and str2 str3 = str1 + str2; cout << "str1 + str2 : " << str3 << endl; // total length of str3 after concatenation 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 : Hello str1 + str2 : HelloWorld str3.size() : 10
Langue C