Section courante

A propos

Section administrative du site

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 !
  1. #include <iostream>
  2. #include <fstream>
  3. #include <sstream>
  4.  
  5. int main()
  6. {
  7.     std::ifstream Handle ("readtext.txt");
  8.     if(Handle.is_open()) {
  9.         int I = 1;
  10.         while(!Handle.eof()) {
  11.             std::string CurrLine;
  12.             std::getline(Handle,CurrLine);
  13.             std::cout << I << ":" << CurrLine << std::endl;
  14.             I++;
  15.         }
  16.         Handle.close();
  17.     }
  18.    return 0;
  19. }

on obtiendra le résultat suivant :

1:Un
2: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


Dernière mise à jour : Mardi, le 24 novembre 2015