C++ Fonction de chaîne : strcpy(), strcat(), strlen(), strcmp() Exemple
Qu'est-ce qu'une chaîne ?
Une chaîne est une séquence de caractères. UN C++ string est un objet de la classe std::string. Les caractères sont des séquences d'octets stockées avec accès à un seul octet de caractère autorisé.
C++ Les chaînes allouent de la mémoire de manière dynamique. Plus de mémoire peut être allouée à la chaîne pendant l'exécution si nécessaire. Comme il n'y a pas de pré-allocation de mémoire, il n'y a pas de gaspillage de mémoire. Nous pouvons effectuer diverses opérations sur les chaînes, notamment des comparaisons, des concaténations, des conversions, etc.
Déclaration de chaînes
C++ prend en charge deux types de déclarations de chaîne :
- Chaîne de caractères de style C
- Type de classe de chaîne
Chaîne de caractères de style C
Ce type de déclaration de chaîne a été introduit dans Langage de programmation C. C++ continue de le soutenir. Il s'agit simplement d'un tableau unidimensionnel de caractères terminé par un caractère nul (\0). Une chaîne terminée par un caractère nul comporte des caractères qui composent la chaîne, puis suivis d'un caractère nul.
Considérez la déclaration de chaîne ci-dessous :
char name[5] = {'J', 'o', 'h', 'n', '\0'};
La déclaration ci-dessus crée une chaîne qui forme le mot John. Le mot comporte 4 caractères, mais la chaîne a une taille de 5. L'espace supplémentaire permet de conserver le caractère nul.
En utilisant la règle d'initialisation du tableau, nous pouvons écrire l'instruction ci-dessus comme suit :
char name[] = "John";
Notez que vous n'êtes pas obligé de placer le caractère nul à la fin de la constante chaîne. Le C++ le compilateur placera automatiquement le '\0' à la fin de la chaîne lors de l'initialisation du tableau.
std :: string
La norme C++ La bibliothèque fournit la classe string qui prend en charge diverses opérations de chaîne. Elle est écrite sous la forme std::string.
Pour utiliser cette classe, nous devons d'abord l'inclure dans notre espace de travail à l'aide du préprocesseur #include comme indiqué ci-dessous :
#include<string>
Ensuite, nous pouvons déclarer notre chaîne en utilisant le mot-clé string. Par exemple:
string name = "John";
L'instruction ci-dessus créera une chaîne nommée name pour contenir la valeur John.
Accéder aux valeurs de chaîne
In C++, nous pouvons accéder aux valeurs de chaîne en utilisant le nom de la chaîne. Par exemple:
#include <iostream> using namespace std; int main() { char name[5] = { 'J', 'o', 'h', 'n', '\0' }; cout << "String value is: "; cout << name << endl; return 0; }
Sortie :
Voici une capture d'écran du code :
Explication du code :
- Y compris le fichier d'en-tête iostream dans notre code. Cela nous permettra de lire et d'écrire sur la console.
- Y compris l'espace de noms std afin d'utiliser ses classes et fonctions sans l'appeler.
- Appel de la fonction main() à l'intérieur de laquelle la logique du programme doit être ajoutée. Le { marque le début du corps de la fonction main().
- Déclarer une chaîne de caractères et lui donner le nom name. La chaîne stockera la valeur John. L'espace supplémentaire stockera le caractère nul.
- Impression du texte sur la console.
- Impression de la valeur de la chaîne nommée name sur la console.
- La fonction main() doit renvoyer une valeur si le programme fonctionne correctement.
- Fin du corps de la fonction main().
Voici un autre exemple utilisant le C++ classe de chaîne standard :
#include <iostream> #include <string> using namespace std; int main() { string name = "Guru99"; cout << "The name is : " << name << endl; return 0; }
Sortie :
Voici une capture d'écran du code :
Explication du code :
- Y compris le fichier d'en-tête iostream dans notre code. Cela nous permettra de lire et d'écrire sur la console.
- Y compris la classe de chaîne standard dans notre code.
- Y compris l'espace de noms std afin d'utiliser ses classes et fonctions sans l'appeler.
- Appel de la fonction main() à l'intérieur de laquelle la logique du programme doit être ajoutée. Le { marque le début du corps de la fonction main().
- Déclarer une chaîne et lui donner le nom name. La chaîne stockera la valeur Guru99.
- Impression de la valeur du nom de chaîne à côté du texte sur la console.
- La fonction main() doit renvoyer une valeur si le programme fonctionne correctement.
- Fin du corps de la fonction main().
Fonctions de chaîne dans C++
Vous aurez souvent envie de manipuler des chaînes. C++ fournit un large éventail de fonctions que vous pouvez utiliser à cet effet. Ces fonctions sont définies dans la classe CString, nous devons donc l'inclure dans notre code afin d'utiliser les fonctions. Discutons-en quelques-uns :
strcpy ()
Il s'agit de la fonction de copie de chaîne. Il copie une chaîne dans une autre chaîne.
syntaxe:
strcpy(string1, string2);
Les deux paramètres de la fonction, string1 et string2, sont des chaînes. La fonction copiera la chaîne string2 dans string1.
strcat ()
Il s'agit de la fonction de concaténation de chaînes. Il concatène les chaînes.
syntaxe:
strcat(string1, string2);
Les deux paramètres de la fonction, string1 et string2 sont les chaînes à concaténer. La fonction ci-dessus concatènera la chaîne string2 à la fin de la chaîne string1.
strlen()
Il s'agit de la fonction de longueur de chaîne. Il renvoie la longueur de la chaîne qui lui est passée en argument.
syntaxe:
strnlen(string1)
Le paramètre string1 est le nom de la chaîne dont on veut déterminer la longueur. La fonction ci-dessus renverra la longueur de la chaîne string1.
strcmp()
Il s'agit de la fonction de comparaison de chaînes. Il est utilisé pour la comparaison de chaînes.
syntaxe:
strcmp(string1, string2);
La fonction ci-dessus renverra 0 si les chaînes string1 et string2 sont similaires, moins de 0 si string1 chaîne2.
Mise en situation :
L'exemple suivant montre comment utiliser les fonctions de chaîne ci-dessus :
#include <iostream> #include <cstring> using namespace std; int main() { char name1[10] = "Guru99"; char name2[10] = "John"; char name3[10]; int len; strcpy(name3, name1); cout << "strcpy( name3, name1) : " << name3 << endl; strcat(name1, name2); cout << "strcat( name1, name2): " << name1 << endl; len = strlen(name1); cout << "strlen(name1) : " << len << endl; return 0; }
Sortie :
Voici une capture d'écran du code :
Explication du code :
- Y compris le fichier d'en-tête iostream dans notre code. Cela nous permettra de lire et d'écrire sur la console.
- Y compris la classe CString standard dans notre code.
- Y compris l'espace de noms std afin d'utiliser ses classes et fonctions sans l'appeler.
- Appel de la fonction main() à l'intérieur de laquelle la logique du programme doit être ajoutée. Le { marque le début du corps de la fonction main().
- Déclarer une chaîne de 10 caractères et lui donner le nom nom1. La chaîne stockera la valeur Guru99.
- Déclarer une chaîne de 10 caractères et lui donner le nom nom2. La chaîne stockera la valeur John.
- Déclarer une chaîne de 10 caractères et lui donner le nom name3.
- Déclarer un variable entière nommé len.
- Copie de la chaîne name1 dans la chaîne name3.
- Impression de la valeur de la chaîne name1 à côté du texte sur la console. Il devrait imprimer Guru99.
- Concaténation des chaînes nom2 à la fin de la chaîne nom1. La valeur de name1 est désormais Guru99John.
- Impression de la valeur de la chaîne name1 à côté du texte sur la console. Il devrait imprimer Guru99John
- Déterminer la longueur de la chaîne nommée name1 et attribuer la valeur de length à la variable len.
- Impression de la valeur de la variable len à côté d'un autre texte sur la console.
- La fonction main() doit renvoyer une valeur si le programme fonctionne correctement.
- Fin du corps de la fonction main().
Résumé
- Une chaîne est une séquence de caractères.
- Les chaînes appartiennent à la classe de chaînes standard dans C++.
- Nous pouvons déclarer des chaînes en utilisant la chaîne de caractères de style C ou la classe de chaînes standard.
- La fonction strcpy() copie une chaîne dans une autre.
- La fonction strcat() concatène deux chaînes.
- La fonction strlen() renvoie la longueur d'une chaîne.
- La fonction strcmp() compare deux chaînes.