Introduction à la Gestion des Fichiers en C++

Introduction à la Gestion des Fichiers en C++

Amine Abidi - Lead Software Engineer C++/Qt - Associé PointerLab

Publié par Amine Abidi - Lead Software Engineer C++/Qt - Associé PointerLab

Introduction

La gestion des fichiers est une compétence essentielle en programmation. En C++, elle repose sur la bibliothèque standard fstream, qui fournit trois classes principales :

  • std::ifstream : pour la lecture des fichiers.
  • std::ofstream : pour l’écriture dans les fichiers.
  • std::fstream : pour la lecture et l’écriture combinées.

Cet article introduit les bases de la gestion des fichiers en C++ avec des exemples pratiques pour ouvrir, lire, écrire et manipuler des fichiers.


1. Les bases de la gestion des fichiers

En C++, vous devez inclure la bibliothèque <fstream> pour travailler avec des fichiers. Voici les étapes générales :

  1. Créer un objet de fichier (std::ifstream, std::ofstream ou std::fstream).
  2. Ouvrir le fichier avec une méthode comme .open() ou en passant directement le nom du fichier au constructeur.
  3. Vérifier si le fichier est correctement ouvert à l’aide de .is_open().
  4. Lire ou écrire dans le fichier.
  5. Fermer le fichier avec .close().

Exemple : Écriture dans un fichier

#include <iostream>
#include <fstream>
using namespace std;

int main() {
    ofstream fichier("exemple.txt"); // Crée et ouvre le fichier

    if (fichier.is_open()) {
        fichier << "Bonjour, ceci est un fichier texte.\n";
        fichier << "L'écriture dans les fichiers est simple en C++.\n";
        fichier.close(); // Ferme le fichier
        cout << "Écriture réussie dans exemple.txt" << endl;
    } else {
        cout << "Erreur : Impossible d'ouvrir le fichier." << endl;
    }

    return 0;
}

2. Lecture depuis un fichier

Pour lire un fichier, utilisez std::ifstream. Voici un exemple pour lire ligne par ligne :

#include <iostream>
#include <fstream>
#include <string>
using namespace std;

int main() {
    ifstream fichier("exemple.txt"); // Ouvre le fichier en lecture
    string ligne;

    if (fichier.is_open()) {
        while (getline(fichier, ligne)) { // Lit une ligne à la fois
            cout << ligne << endl;
        }
        fichier.close(); // Ferme le fichier
    } else {
        cout << "Erreur : Impossible de lire le fichier." << endl;
    }

    return 0;
}

3. Lecture et écriture combinées

Avec std::fstream, vous pouvez ouvrir un fichier en lecture et écriture. Cela est utile pour modifier des fichiers existants.

Exemple : Lecture et écriture

#include <iostream>
#include <fstream>
#include <string>
using namespace std;

int main() {
    fstream fichier("exemple.txt", ios::in | ios::out); // Ouvre en lecture et écriture

    if (fichier.is_open()) {
        string ligne;

        while (getline(fichier, ligne)) { // Lit chaque ligne
            cout << "Ligne lue : " << ligne << endl;
        }

        fichier.seekp(0, ios::end); // Place le curseur en fin de fichier
        fichier << "Ajout d'une nouvelle ligne.\n"; // Écrit une nouvelle ligne

        fichier.close(); // Ferme le fichier
    } else {
        cout << "Erreur : Impossible d'ouvrir le fichier." << endl;
    }

    return 0;
}

4. Vérifications et gestion des erreurs

Il est important de vérifier si les opérations sur les fichiers réussissent ou échouent. La bibliothèque fstream fournit des méthodes comme :

  • .is_open() : pour vérifier si le fichier est ouvert.
  • .fail() : pour détecter les erreurs d’entrée/sortie.

Exemple : Gestion des erreurs

#include <iostream>
#include <fstream>
using namespace std;

int main() {
    ifstream fichier("fichier_inexistant.txt");

    if (fichier.fail()) {
        cerr << "Erreur : Le fichier n'existe pas ou ne peut être ouvert." << endl;
    } else {
        cout << "Fichier ouvert avec succès." << endl;
    }

    return 0;
}

5. Exercice pratique

Énoncé

Créez un programme qui :

  1. Lit un fichier contenant une liste de noms et de notes (ex. : data.txt).
  2. Affiche les noms et les notes ligne par ligne.
  3. Ajoute un nouveau nom et une nouvelle note à la fin du fichier.
  4. Testez votre programme avec un fichier d'exemple.

Conclusion

La gestion des fichiers en C++ est une compétence fondamentale pour manipuler et persister les données. En utilisant les classes std::ifstream, std::ofstream et std::fstream, il est possible de lire, écrire et modifier des fichiers de manière efficace et sécurisée.

Pour aller plus loin, découvrez comment manipuler des fichiers CSV et JSON en C++ dans notre article : Lecture et écriture de fichiers CSV et JSON en C++.


À propos de PointerLab

PointerLab est une ESN spécialisée dans le développement de logiciels C++ et experte sur le framework Qt.

Le nom PointerLab reflète notre maîtrise des concepts complexes en C++ et notre volonté d'innovation. Nous défendons des valeurs d’excellence technique, de transparence et de collaboration horizontale.

Rejoignez la communauté C++ France sur Discord !

Développez votre réseau et boostez votre carrière avec la communauté C++ France