Maîtriser les fonctions de chaînes C++ : strcpy, strcat, strlen, strcmp – Exemples pratiques
Qu'est-ce qu'une chaîne ?
Une chaîne est simplement une séquence de caractères. En C++ moderne, on utilise généralement des objets de la classe std::string, qui gère automatiquement l'allocation mémoire, le redimensionnement et une multitude de fonctions membres utiles. Cela élimine le besoin de gestion manuelle des tampons et réduit les risques de débordement de tampon.
À des fins pédagogiques, C++ prend encore en charge les tableaux de caractères de style C terminés par un caractère nul. Les deux approches ont leur place : utilisez std::string pour la programmation quotidienne, et réservez les chaînes de style C aux API héritées ou au code bas niveau critique en performance.
Déclarer des chaînes
- Chaîne de caractères de style C : un tableau unidimensionnel de
charterminé par un caractère nul (\0). - std::string : une classe de la bibliothèque standard C++ offrant une interface riche pour la manipulation de chaînes.
Chaîne de caractères de style C
Exemple :
char name[5] = {'J', 'o', 'h', 'n', '\0'};
Ou plus concisément :
char name[] = "John"; // le compilateur insère le '\0' terminal
std::string
Pour utiliser std::string, incluez l'en-tête et déclarez une variable :
#include <string> std::string name = "John";
Accéder aux valeurs des chaînes
Voici un programme console simple qui affiche une chaîne de style C et une valeur std::string.
#include <iostream>
#include <string>
using namespace std;
int main() {
char cName[5] = "John"; // chaîne style C
string cppName = "Guru99"; // std::string
cout << "Chaîne style C : " << cName << endl;
cout << "std::string : " << cppName << endl;
return 0;
}
Sortie :

Fonctions clés des chaînes C
Ces fonctions sont définies dans l'en-tête cstring. Elles opèrent sur les chaînes de style C (tableaux de char terminés par nul).
strcpy()
Copie la chaîne source dans le tampon de destination. La destination doit être assez grande pour contenir la source.
strcpy(dest, src); // dest doit avoir assez d'espace
strcat()
Ajoute la chaîne source à la fin de la chaîne de destination. Encore une fois, le tampon de destination doit être assez grand pour accueillir le résultat.
strcat(dest, src); // dest doit avoir assez d'espace
strlen()
Retourne le nombre de caractères dans la chaîne, en excluant l'octet nul terminal.
size_t len = strlen(str);
strcmp()
Compare deux chaînes lexicographiquement. Retourne 0 si elles sont égales, une valeur négative si la première chaîne est plus petite, et une valeur positive si la première chaîne est plus grande.
int cmp = strcmp(str1, str2);
Exemple pratique
#include <iostream>
#include <cstring>
using namespace std;
int main() {
char name1[10] = "Guru99";
char name2[10] = "John";
char name3[20]; // Assez grand pour le résultat concaténé
// Copie
strcpy(name3, name1);
cout << "strcpy(name3, name1): " << name3 << endl;
// Concaténation
strcat(name1, name2);
cout << "strcat(name1, name2): " << name1 << endl;
// Longueur
size_t len = strlen(name1);
cout << "strlen(name1): " << len << endl;
// Comparaison
int cmp = strcmp(name1, name3);
cout << "strcmp(name1, name3): " << cmp << endl;
return 0;
}
Sortie :

À retenir
- Utilisez
std::stringpour la plupart du code C++ – c'est plus sûr et plus facile. - Quand vous devez travailler avec des tableaux de caractères bruts, les fonctions
cstringsont essentielles. - Assurez-vous toujours que les tampons de destination sont assez grands pour éviter les débordements.
- Utilisez
strlenseulement quand vous avez besoin de la longueur ;std::string::size()est préférable pour les objetsstd::string. - Préférez
strcmppour les API héritées ;std::string::compare()ou l'opérateur surchargéoperator==donnent une sémantique plus claire en C++ moderne.
Langue C
- 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
- Les tableaux en C++ : Déclaration, initialisation et techniques avec pointeurs
- Boucle do-while en C++ : Syntaxe, exemples pratiques et boucles imbriquées
- Maîtriser les pointeurs en C++ : Concepts, exemples et applications pratiques
- Maîtriser le type char en C++ : Déclaration, ASCII et techniques de conversion
- Surcharge d'opérateurs en C++ : Guide pratique avec exemples de code
- Les Fonctions en C++ Expliquées avec des Exemples de Code Pratiques