Maîtriser les chaînes de caractères en C++ : Style C vs std::string
C++ fournit les deux types de représentations de chaînes suivants :
- La chaîne de caractères de style C.
- Le type classe string introduit avec le C++ standard.
La chaîne de caractères de style C
La chaîne de caractères de style C a vu le jour dans le langage C et continue d'être prise en charge dans C++. Cette chaîne est en réalité un tableau unidimensionnel de caractères qui se termine par un caractère null '\0'. Ainsi, une chaîne terminée par null 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 consistant en le mot « Hello ». Pour contenir le caractère null à la fin du tableau, la taille du tableau de caractères contenant la chaîne est d'un de plus que le nombre de caractères dans le mot « Hello ».
char greeting[6] = {'H', 'e', 'l', 'l', 'o', '\0'};
Si vous suivez la règle d'initialisation de tableau, vous pouvez écrire l'instruction ci-dessus comme suit :
char greeting[] = "Hello";
Voici la représentation en mémoire de la chaîne définie ci-dessus en C/C++ :
En réalité, vous ne placez pas le caractère null à la fin d'une constante de chaîne. Le compilateur C++ place automatiquement le '\0' à la fin de la chaîne lors de l'initialisation du tableau. Essayons d'afficher la chaîne mentionnée ci-dessus :
#include <iostream>
using namespace std;
int main() {
char greeting[6] = {'H', 'e', 'l', 'l', 'o', '\0'};
cout << "Message de salutation : ";
cout << greeting << endl;
return 0;
}
Lorsque le code ci-dessus est compilé et exécuté, il produit le résultat suivant :
Message de salutation : Hello
C++ prend en charge une large gamme de fonctions qui manipulent les chaînes terminées par null :
| N° | Fonction et but |
|---|---|
| 1 | strcpy(s1, s2); Copie la chaîne s2 dans la chaîne s1. |
| 2 | strcat(s1, s2); Concatène la chaîne s2 à la fin de la chaîne s1. |
| 3 | strlen(s1); Retourne la longueur de la chaîne s1. |
| 4 | strcmp(s1, s2); Retourne 0 si s1 et s2 sont identiques ; < 0 si s1 < s2 ; > 0 si s1 > s2. |
| 5 | strchr(s1, ch); Retourne un pointeur vers la première occurrence du caractère ch dans la chaîne s1. |
| 6 | strstr(s1, s2); Retourne un pointeur vers la première occurrence de la chaîne s2 dans la chaîne s1. |
L'exemple suivant utilise quelques-unes des fonctions mentionnées ci-dessus :
#include <iostream>
#include <cstring>
using namespace std;
int main() {
char str1[10] = "Hello";
char str2[10] = "World";
char str3[10];
int len;
// copie str1 dans str3
strcpy(str3, str1);
cout << "strcpy(str3, str1) : " << str3 << endl;
// concatène 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 un résultat comme suit :
strcpy(str3, str1) : Hello strcat(str1, str2) : HelloWorld strlen(str1) : 10
La classe String en C++
La bibliothèque standard C++ fournit un type de classe string qui prend en charge toutes les opérations mentionnées ci-dessus, avec en plus de nombreuses fonctionnalités supplémentaires. Vérifions l'exemple suivant :
#include <iostream>
#include <string>
using namespace std;
int main() {
string str1 = "Hello";
string str2 = "World";
string str3;
int len;
// copie str1 dans str3
str3 = str1;
cout << "str3 : " << str3 << endl;
// concatène 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 un résultat comme suit :
str3 : Hello str1 + str2 : HelloWorld str3.size() : 10
Langue C
- Maîtriser les chaînes C# : Fondamentaux, opérations et techniques avancées
- Maîtriser les opérateurs C++ : Guide complet avec exemples pratiques
- Commentaires C++ : Bonnes pratiques pour un code lisible et maintenable
- Maîtriser les chaînes de caractères en Java : Création, méthodes et bonnes pratiques
- Maîtriser les représentations en chaînes dans les enums Java
- Variables et types de données en C++ : Guide expert sur int, double, char, string, bool
- Maîtriser les fonctions de chaînes C++ : strcpy, strcat, strlen, strcmp – Exemples pratiques
- Chaînes de caractères en C simplifiées : Déclaration, entrée, sortie et fonctions de bibliothèque
- Classe Strings Java : Maîtriser la Création et la Manipulation de Chaînes