Travailler avec le système de fichiers en C++ : guide complet pour débutants

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Travailler avec le système de fichiers en C++ : des bases aux techniques avancées



Travailler avec le système de fichiers est l'une des tâches clés dans toute application sérieuse en C++. Qu'il s'agisse de lire des fichiers de configuration, d'écrire des logs, de traiter de grands volumes de données ou de gérer des projets — savoir interagir correctement avec les fichiers et les répertoires est nécessaire pour tout développeur C++. Dans cet article, nous allons détailler les approches principales pour travailler avec le système de fichiers en C++, en commençant par les fonctions C classiques jusqu'au moderne std::filesystem, apparu en C++17.



Nous examinerons des exemples pratiques qui vous aideront non seulement à comprendre la théorie, mais aussi à appliquer immédiatement les connaissances acquises dans des projets réels. Tous les exemples de code sont testés et prêts à être utilisés.



1. Bases du travail avec les fichiers : flux d'entrée/sortie



La manière la plus courante de travailler avec des fichiers en C++ est d'utiliser la bibliothèque <fstream>. Elle fournit trois classes principales :



  • std::ifstream — pour la lecture depuis un fichier (input file stream);
  • std::ofstream — pour l'écriture dans un fichier (output file stream);
  • std::fstream — pour la lecture et l'écriture (file stream).


Lecture depuis un fichier



Pour lire des données depuis un fichier, créez un objet std::ifstream et ouvrez le fichier. La manière la plus simple de lire un fichier ligne par ligne est d'utiliser la fonction std::getline :



#include <iostream>#include <fstream>#include <string>

int main() { std::ifstream inputFile("example.txt"); if (!inputFile.is_open()) { std::cerr << "Erreur d'ouverture du fichier !" << std::endl; return 1; }

std::string line; while (std::getline(inputFile, line)) { std::cout << line << std::endl; }

inputFile.close(); return 0;}


Notez la vérification is_open() — c'est une pratique importante qui empêche le plantage du programme si le fichier est absent.



Écriture dans un fichier



Pour écrire des données, on utilise std::ofstream. Par défaut, le fichier est créé à nouveau (mode trunc). Si vous devez ajouter des données à la fin, utilisez le drapeau std::ios::app :



#include <iostream>#include <fstream>

int main() { std::ofstream outputFile("output.txt", std::ios::app); if (!outputFile.is_open()) { std::cerr << "Erreur de création du fichier !" << std::endl; return 1; }

outputFile << "Ligne 1" << std::endl; outputFile << "Ligne 2" << std::endl; outputFile << "Nombre : " << 42 << std::endl;

outputFile.close(); return 0;}


Travail avec les fichiers binaires



Pour les données binaires, utilisez les méthodes read() et write() en spécifiant la taille du bloc :



#include <iostream>#include <fstream>#include <cstring>

struct Record { int id; char name[50]; double value;};

int main() { // Écriture Record r = {1, "Enregistrement test", 3.14}; std::ofstream binOut("data.bin", std::ios::binary); binOut.write(reinterpret_cast<const char*>(&r), sizeof(r)); binOut.close();

// Lecture Record r2; std::ifstream binIn("data.bin", std::ios::binary); binIn.read(reinterpret_cast<char*>(&r2), sizeof(r2)); binIn.close();

std::cout << "ID : " << r2.id << ", Nom : " << r2.name << ", Valeur : " << r2.value << std::endl; return 0;}


2. Approche moderne : la bibliothèque std::filesystem (C++17)



À partir de C++17, la bibliothèque standard a été enrichie avec <filesystem>, ce qui simplifie considérablement le travail avec le système de fichiers. O

Blogs

Book Recommendations