En C++, la lecture d'un fichier texte séquentiel constitue l'une des opérations d'entrée/sortie les plus courantes dans le développement d'applications. Qu'il s'agisse de lire un fichier de configuration, un journal d'événements, une liste de données ou simplement un document texte, le langage offre des bibliothèques standard permettant d'effectuer cette tâche de manière simple, efficace et portable. Grâce aux classes fournies par l'entête <fstream>, il devient possible d'ouvrir un fichier, de parcourir son contenu ligne par ligne et de traiter les informations qu'il contient sans avoir à manipuler directement les mécanismes internes du système d'exploitation.
Supposons, par exemple, que le fichier «readtext.txt» contienne une série de mots répartis sur plusieurs lignes, allant de «Un» jusqu'à «Seize». Dans une telle situation, il peut être utile non seulement de lire chacune des lignes du fichier, mais également d'afficher leur position dans le document. Cette technique est fréquemment utilisée lors de la création d'outils de traitement de texte, de programmes d'analyse de données ou encore de systèmes de diagnostic permettant de repérer rapidement une information à une ligne précise :
|
Un Deux Trois Quatre Cinq Six Sept Huit Neuf Dix Onze Douze Treize Quatorze Quinze Seize |
Pour accomplir cette opération, il suffit d'ouvrir le fichier en mode lecture, de vérifier que son ouverture s'est effectuée correctement, puis de parcourir son contenu à l'aide d'une boucle. À chaque itération, une ligne est extraite du fichier grâce à la fonction getline, puis affichée à l'écran précédée d'un numéro de séquence. Le programme C++ suivant illustre cette approche de manière claire et permet d'afficher l'ensemble des lignes du fichier accompagnées de leur numéro respectif, facilitant ainsi la consultation et le repérage des informations contenues dans le document :
Essayer maintenant !
- #include <iostream>
- #include <fstream>
- #include <sstream>
-
- int main()
- {
- std::ifstream Handle ("readtext.txt");
- if(Handle.is_open()) {
- int I = 1;
- while(!Handle.eof()) {
- std::string CurrLine;
- std::getline(Handle,CurrLine);
- std::cout << I << ":" << CurrLine << std::endl;
- I++;
- }
- Handle.close();
- }
- return 0;
- }
on obtiendra le résultat suivant :
1:Un2:Deux
3:Trois
4:Quatre
5:Cinq
6:Six
7:Sept
8:Huit
9:Neuf
10:Dix
11:Onze
12:Douze
13:Treize
14:Quatorze
15:Quinze
16:Seize