Programmation en C++ – Les chaînes de caractères : String
C++ Fournit les deux types suivants pour la représentation des chaîne de caractères :
- Les chaînes de caractères de style C.
- La classe String introduit avec le Standard C ++.
Les chaînes de caractères de style C
Les chaînes de caractères de style C leurs origine est dans le langage C et continue à être pris en charge dans C ++. Cette chaîne est un tableau unidimensionnel de caractères qui est terminé par un caractère nul ‘ 0’.
La déclaration et l’initialisation suivantes créent une chaîne de caractères « Hello ». Pour ajouter le caractère NULL à la fin du tableau, la taille du tableau doit être 1 + le nombre de caractères qui composent la chaîne de caractères «Hello», donc c’est (1+5 = 6).
char bonjour[6] = {'H', 'e', 'l', 'l', 'o', ''};
Vous pouvez écrire l’instruction ci-dessus comme suit:
char bonjour[] = "Hello";
Voici la présentation de la mémoire de la chaîne définie ci-dessus en C / C ++:
Vous ne placez pas le caractère NULL à la fin d’une chaîne constante. Parce que le compilateur place automatiquement le ‘ 0’ à la fin de la chaîne quand il initialise le tableau. Essayons maintenant d’afficher la chaîne mentionnée ci-dessus:
#include <iostream> using namespace std; int main () { char bonjour[6] = {'H', 'e', 'l', 'l', 'o', ''}; cout << ""Message de bienvenue: "; cout << bonjour << endl; return 0; }
Lorsque le code ci-dessus est compilé et exécuté, il produit résultat quelque chose comme suit:
Message de bienvenue: Hello
C ++ prend en charge un ensemble de fonctions qui manipulent des chaînes terminées par un null:
Fonctions |
---|
strcpy(s1, s2); Copie la chaîne s2 dans la chaîne s1. |
strcat(s1, s2); Concatène la chaîne s2 avec la fin de la chaîne s1. |
strlen(s1); Retourne la longueur de la chaîne s1. |
strcmp(s1, s2); Renvoie 0 si s1 et s2 sont identiques; Inférieur à 0 si s1 <s2; Supérieur à 0 si s1> s2. |
strchr(s1, ch); Retourne un pointeur vers la première occurrence du caractère ch dans la chaîne s1. |
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 fonctions mentionnées ci-dessus :
#include <iostream> #include <cstring> using namespace std; int main () { char chain1[20] = "Main"; char chain2[20] = "Programmer"; char chain3[20]; int taille ; // copier chain1 dans chain3 strcpy( chain3, chain1); cout << "strcpy( chain3, chain1) : " << chain3 << endl; // concatène chain1 et chain2 strcat( chain1, chain2); cout << "strcat( chain1 , chain2): " << chain1 << endl; // longueur totale de chain1 après concaténation taille = strlen(chain1); cout << "strlen(chain1) : " << taille << endl; return 0; }
Lorsque le code ci-dessus est compilé et exécuté, il produit le résultat suivant :
strcpy( chain3, chain1) : Main strcat( chain1, chain2): MainProgrammer strlen(chain1) : 14
La classe String en C ++
La bibliothèque C ++ standard fournit un type de classe string qui prend en charge toutes les opérations mentionnées ci-dessus, et beaucoup plus de fonctionnalités. Nous allons étudier cette classe dans la Library Standard C ++ , mais pour l’instant nous allons voir un bref exemple:
À ce stade, vous ne comprenez peut-être pas cet exemple car jusqu’à présent nous n’avons pas discuté sur les classes et les objets. Donc, jetez un coup œil et continuez jusqu’à ce que vous ayez la compréhension sur les concepts orientés objet.
#include <iostream> #include <string> using namespace std; int main () { string chain1 = "Main"; string chain2 = "Programmer"; string chain3; int taille; // copier la chaine1 dans la chaine3 chain3 = chain1; cout << "chain3 : " << chain3 << endl; // concatène la chaîne1 dans la chaîne2 chain3 = chain1 + chain2; cout << "chain1 + chain2: " << chain3 << endl; // longueur totale de chain3 après concaténation taille= chain3.size(); cout << "chain3.size() : " << taille<< endl; return 0; }
Lorsque le code ci-dessus est compilé et exécuté, il produit le résultat suivant:
chaine3 : Main chaine1 + chaine2 : MainProgrammer chaine3.size() : 14