Upload
odina
View
39
Download
0
Embed Size (px)
DESCRIPTION
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. - PowerPoint PPT Presentation
Citation preview
Bases de la programmation en C++ 1
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 o u r \0
Bases de la programmation en C++ 2
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 o u r \0
char mot [ 50 + 1] ;char phrase [ 250 ] ;
Bases de la programmation en C++ 3
Initialisation d’une chaîne
Caractère par caractèrechar mot [3 +1 ]; //déclaration
//Initialisationmot [0] =‘a’;mot [1] =‘i’;mot [2] =‘e’;mot [3] =‘\0’;
A la déclaration//comme un tableauchar 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é automatiquementchar phrase [200] = "Bonjour" ;
Bases de la programmation en C++ 4
Initialisation d’une chaîne
Exemple
char MonMot [4 + 1] ; // réservation de place en mémoireMonMot [0] = ‘M’; //initialisation caractère par caractèreMonMot [1] = ‘i’;MonMot [2] = ‘a’;MonMot [3] = ‘m’;MonMot [4] = ‘\0’;
// Déclaration + initialisation// initialisation comme un tableau classiquechar 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++ 5
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
> Pin Pon
> Pon
Bases de la programmation en C++ 6
Exempleint 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++ 7
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++ 8
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++ 9
Exempleint 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++ 10
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;cout<< ascii;
int ascii='a’;cout<< ascii;
char ascii=99cout<< ascii;
> a
> b
> 97
> c
Bases de la programmation en C++ 11
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);