Fiché CM_4.pdf
Document Details
Uploaded by VisionaryVerisimilitude
École Supérieure d'Ingénieurs Léonard de Vinci
Full Transcript
Programmation C++ A3 : 2023-2024 Sonia Djebali et Nora Izri [email protected] Les chaînes de caractères L’utilisation des chaînes de caractères se voit simplifiée en C++, par rapport au C, notamment avec la classe std::string. La classe string encapsule un buffer de caractères (char). Elle pe...
Programmation C++ A3 : 2023-2024 Sonia Djebali et Nora Izri [email protected] Les chaînes de caractères L’utilisation des chaînes de caractères se voit simplifiée en C++, par rapport au C, notamment avec la classe std::string. La classe string encapsule un buffer de caractères (char). Elle peut contenir plusieurs caractères de fin de ligne (’\0’) Attention à bien faire #include et non #include qui correspond à la gestion des chaînes en C. La classe std::string La classe std::string, une API riche La classe std::string, une API riche La classe std::string, une API riche Plus de détails sur : http://www.sgi.com/tech/stl/basic_string.html Langage La classe std::stringstream La classe std::string ne possède pas de moyens d’ajouter des entiers, réels ou booléens directement à une chaîne. La classe std::stringstream permet une édition des chaînes de caractères par les flux. Friend, surcharge Le mot-clé friend Le mot clé friend permet l’accès aux attributs et méthodes membres privés ou protégés d’une classe depuis une fonction particulière (qui n’est pas membre de la classe) ; depuis une méthode particulière d’une classe extérieure ; depuis (toute) une classe extérieure. Fonction amie Méthode amie Classe amie Surcharge de fonction Rappel : en C++, la surcharge de fonctions (et donc aussi de fonctions membres) est possible : même nom utilisé pour plusieurs fonctions à la condition que leurs paramètres soient différents Surcharge et valeurs par défaut À la déclaration d’une fonction, possibilité d’attribuer des valeurs par défaut aux paramètres. Lors de l’appel de la fonction, si un paramètre n’est pas renseigné, c’est sa valeur par défaut qui est prise en compte Surcharge et valeurs par défaut Contrainte à respecter Lorsqu’un paramètre (à une position n) possède une valeur par défaut, tous les paramètres suivants (positions > n) doivent avoir une valeur par défaut Surcharge et valeurs par défaut Attention aux cas suivants : Gestion des fichiers C++ Lecture et Ecriture dans un fichier texte Gestion des fichiers C++ ➔ comment ouvrir, écrire, lire et fermer des fichiers La première chose à faire quand on veut manipuler des fichiers, c'est de les ouvrir. Une fois le fichier ouvert, tout se passe comme pour cout et cin. Il faut commencer par inclure le bon fichier d'en-tête. Pour les fichiers, il faut spécifier #include => fstream correspond à "file stream" ou "flux vers les fichiers". Ecriture dans un fichier texte Déclare un flux exactement de la même manière qu'une variable, une variable dont le type serait ofstream , et dont la valeur serait le chemin d'accès du fichier à lire. Comme pour les variables, il y a quelques règles à suivre pour le choix du nom du flux : les noms des flux sont constitués de lettres, de chiffres et du tiret-bas _ uniquement ; le premier caractère doit être une lettre (majuscule ou minuscule) ; on ne peut pas utiliser d'accents ; on ne peut pas utiliser d'espaces dans le nom. Ecriture dans un fichier texte Ce chemin doit prendre l'une ou l'autre des deux formes suivantes : Un chemin absolu : l'emplacement du fichier depuis la racine du disque. Par exemple : C:/Nanoc/C++/Fichiers/scores.txt. Un chemin relatif : l'emplacement du fichier depuis l'endroit où se situe le programme sur le disque. Par exemple : Fichiers/scores.txt si mon programme se situe dans le dossier C:/Nanoc/C++/. Ecriture dans un fichier texte Des problèmes peuvent survenir lors de l'ouverture d'un fichier, si le fichier ne vous appartient pas ou si le disque dur est plein, par exemple. ➔ il faut toujours tester si tout s'est bien passé. => On utilise pour cela la syntaxe if(monFlux). Si ce test n'est pas vrai, alors c'est qu'il y a eu un problème et que l'on ne peut pas utiliser le fichier. Ecriture dans un fichier texte UML 10/2022 Ecriture dans un fichier texte UML 10/2022 Ecriture dans un fichier texte Lors d’une ouverture d’un fichier en écriture ios::app => ajouter à la fin (append), et toujours à la fin. ios::ate => positionnement du curseur à la fin (at end) du fichier. => Contrairement à ios::app, il est possible avec ios::ate de positionner par la suite le curseur à une autre position que la fin de fichier. ios::trunc => ouverture d’un fichier vide, c’est-à-dire écrasement (truncate) du fichier s’il existe. UML 10/2022 Ecriture dans un fichier texte UML 10/2022 Lecture d’un fichier texte Utilisation d’un flux de type ifstream (input file stream). Lecture d’un fichier texte 1. Lecture d'un fichier ligne par ligne avec getline() La première méthode permet de récupérer une ligne entière et de la stocker dans une chaîne de caractères : 2. Lecture d'un fichier mot par mot avec les chevrons >> Cette méthode lit ce qui se trouve entre l'endroit où l'on se situe dans le fichier et l'espace suivant. Ce qui est lu est alors traduit en double, int ou string , selon le type de variable dans lequel on écrit. 3.Lecture d'un fichier caractère par caractère avec get() Ce code lit une seule lettre et la stocke dans la variable a Lecture d’un fichier texte Lisez un fichier en entier UML 10/2022