Travail 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

Travail avec le système de fichiers en C++ : pour débutants



Le travail avec le système de fichiers est l'une des tâches clés de tout programmeur. En C++, il existe plusieurs façons d'interagir avec les fichiers et les répertoires : des flux classiques fstream au moderne std::filesystem (C++17). Dans cet article, nous aborderons les opérations de base : lecture et écriture de fichiers, vérification de leur existence, création et suppression de dossiers, ainsi que la navigation dans le système de fichiers. Tous les exemples de code sont écrits en C++ et conviennent aux débutants.



1. Bases du travail avec les fichiers via fstream



Les classes ifstream (entrée depuis un fichier), ofstream (sortie vers un fichier) et fstream (entrée/sortie) sont les outils de base pour travailler avec des fichiers texte et binaires. Elles se trouvent dans le fichier d'en-tête <fstream>.



Lecture d'un fichier

Pour lire des données depuis un fichier, créez un objet ifstream et ouvrez le fichier. Assurez-vous que le fichier existe, sinon le flux sera dans un état d'erreur.



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

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

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

file.close(); return 0;}


Écriture dans un fichier

Pour écrire, utilisez ofstream. Si le fichier n'existe pas, il sera créé. S'il existe, le contenu sera écrasé (sauf si le drapeau std::ios::app est spécifié).



#include <fstream>

int main() { std::ofstream file("output.txt"); if (!file.is_open()) { std::cerr << "Impossible de créer le fichier"; return 1; }

file << "Hello, world!"; file << "Système de fichiers C++";

file.close(); return 0;}


Ajout de données à la fin d'un fichier

Utilisez le drapeau std::ios::app (append) pour ajouter des données à la fin sans supprimer les précédentes.



std::ofstream file("log.txt", std::ios::app);file << "Nouvelle entrée";file.close();


2. Travail avec les répertoires et le système de fichiers (C++17)



À partir de C++17, la bibliothèque standard inclut l'en-tête <filesystem>, qui fournit une interface pratique et multiplateforme pour travailler avec le système de fichiers. Pour l'utiliser, ajoutez le drapeau de compilation -std=c++17 (ou supérieur) et incluez <filesystem>.



Vérification de l'existence d'un fichier ou d'un répertoire

#include <iostream>#include <filesystem>namespace fs = std::filesystem;

int main() { fs::path p = "example.txt"; if (fs::exists(p)) { std::cout << "Le fichier existe"; std::cout << "Taille : " << fs::file_size(p) << " octets"; } else { std::cout << "Fichier non trouvé"; } return 0;}


Création et suppression de répertoires

#include <filesystem>namespace fs = std::filesystem;

int main() { // Création d'un seul répertoire if (fs::create_directory("my_folder")) { std::cout << "Dossier créé"; }

// Création de répertoires imbriqués fs::create_directories("a/b/c");

// Suppression d'un répertoire vide fs::remove("my_folder");

// Suppression d'un répertoire avec tout son contenu (attention !) // fs::remove_all("a");

return 0;}


Parcours du contenu d'un répertoire

#include <iostream>#include <filesystem>namespace fs = std::filesystem;

int main() { std::string path = "."; for (const auto& entry : fs::directory_iterator(path)) { if

Blogs

Book Recommendations