Les chaînes de caractères Le type « chaîne » n’existe pas en C,C++. certains ont été développé dans des librairies: string (librairie STL). CString (librairie MFC). En langage C++: Une chaîne de caractères est un tableau d’élément de type char. Dont le dernier élément est le caractère nul ‘\0’. (code ASCII: 0). Ce caractère n’est pas affichable. Il indique la fin de la chaîne de caractères. Exemple: La chaîne "Bonjour" est représentée par : B o n j u r \0 Bases de la programmation en C++
Comment déclarer une chaîne de caractères On déclare un tableau de caractères. De taille LongeurChaine + 1 (réservation de place en mémoire) char Nom_du_tableau[Nombre_elements + 1] ; On peut mettre une taille max (ex: 200). La chaîne se terminera au ‘\0’. (on aura réserver de la place pour rien) Exemples B o n j u r \0 char mot [ 50 + 1] ; char phrase [ 250 ] ; Bases de la programmation en C++
Initialisation d’une chaîne Caractère par caractère char mot [3 +1 ]; //déclaration //Initialisation mot [0] =‘a’; mot [1] =‘i’; mot [2] =‘e’; mot [3] =‘\0’; A la déclaration //comme un tableau char phrase [200] = { 'B', 'o', 'n', 'j', 'o', 'u', 'r', '\0' }; // spécifique aux chaîne de caractères // le caractère de fin de chaîne est géré automatiquement char phrase [200] = "Bonjour" ; Bases de la programmation en C++
Initialisation d’une chaîne Exemple char MonMot [4 + 1] ; // réservation de place en mémoire MonMot [0] = ‘M’; //initialisation caractère par caractère MonMot [1] = ‘i’; MonMot [2] = ‘a’; MonMot [3] = ‘m’; MonMot [4] = ‘\0’; // Déclaration + initialisation // initialisation comme un tableau classique char MonMot [4 + 1] = { ‘M’, ‘i’, ‘a’, ‘m’, ‘\0’ } ; // Déclaration + initialisation //Spécifique aux chaînes de caractères char MonMot [4 + 1] = "Miam" ; // le ‘\0’ est rajouté automatiquement Bases de la programmation en C++
Caractères spéciaux \0 caractère de fin de chaîne \" guillemet \\ barre oblique. \n retour à la ligne \r retour chariot cout<<"PinPon"; cout<<"Pin\0Pon"; cout<<"Pin\\Pon"; cout<<"Pin\nPon"; cout<<"Pin\rPon"; > PinPon > Pin > Pin\Pon Pon > Pon Bases de la programmation en C++
Exemple int LongueurChaine( char ch[ ] ); // Déclaration de la fonction LongueurChaine int main() { char chaine[255] = "Bonjour"; int longueur = LongueurChaine(chaine); cout<<longueur<<endl; // Le programme affiche 7 } /* Définition de la fonction LongueurChaine. */ int LongueurChaine( char ch[ ] ) int i = 0; while ( ch[i] != ‘\0’) // on parcours la chaîne jusqu’à arriver au caractère ‘\0’ i++; return i; Bases de la programmation en C++
Restriction On ne peut pas affecter une chaîne en dehors de la déclaration. On ne peut pas affecter une chaîne à une autre. On ne peut pas comparer deux chaînes . char mot[8] = "bonjour"; // OK char mot[8] ; mot = "bonjour"; // ERREUR char mot1[8] ; char mot2[8] ; // déclaration de deux chaînes … mot1 = mot2; // ERREUR char mot1[8] , char mot2[8] ;// déclaration de deux chaînes … if(mot1 == mot2) // ERREUR Bases de la programmation en C++
Fonctions de la bibliothèque standard Fonctions de manipulation de chaînes de caractères. (définies dans string.h). Strlen ( char Ch[ ]) Retourne la longueur de la chaîne Ch. Strcpy ( char ChDest[ ] , char ChSource[ ] ) Copie la chaîne ChSource dans ChDest. Strcmp ( char Ch1[ ] , char Ch2[ ]) Retourne 0 si les 2 chaînes sont identiques. Strcat (char ChDest[ ] , char ChSource[ ] ) Recopie la chaine ChSource à la suite de ChDest. Bases de la programmation en C++
Exemple int main() { // on déclare 2 chaînes char chaine1[200] = "bonjour"; char chaine2[200]; // L’utilisateur rentre chaine2 cout<<"Ecrivez votre nom"<<endl; cin >> chaine2; //on ajoute un espace à chaine1 strcat(chaine1," "); //on ajoute chaine2 à chaine1 strcat(chaine1,chaine2); cout<<chaine1<<endl; } > Ecrivez votre nom Guillaume > bonjour Guillaume Bases de la programmation en C++
Code ASCII et caractères En c++, un caractère est équivalent à son code ASCII (0 => 255). Exemple: char ascii='a'; cout<< ascii; char ascii='a‘+1; int ascii='a’; char ascii=99 > a > b > 97 > c Bases de la programmation en C++
Complément TP5 Écrire une fonction qui prend en paramètre le nom d’un étudiant et renvoie sa note Prototype Int GetNote(const char nom[ ], const etudiant Tab[ ], const int n); Bases de la programmation en C++