La gestion des fichiers en C++
Les fichiers sont utilisés pour stocker des données dans un support de stockage de manière permanente. La gestion des fichiers fournit un mécanisme permettant de stocker la sortie d'un programme dans un fichier et d'y effectuer diverses opérations.
Un flux est une abstraction qui représente un périphérique sur lequel des opérations d'entrée et de sortie sont effectuées. Un flux fait référence à une séquence d'octets.
Pour gérer le flux dans votre programme, vous devez inclure le fichier d'en-tête <fstream>
La bibliothèque fstream fournit aux programmeurs C++ trois classes pour travailler avec des fichiers. Ces classes comprennent :
- ofstream : Cette classe représente un flux de sortie. Elle est utilisée pour créer des fichiers et écrire des données dans des fichiers.
- ifstream : Cette classe représente un flux d'entrée. Elle est utilisée pour lire les données des fichiers.
- fstream : Cette classe représente généralement un flux de fichiers. Elle joue le rôle de classes ofstream/ifstream. Cela signifie qu'elle est capable de créer des fichiers, d'écrire dans des fichiers, de lire des fichiers.
Les trois classes ci-dessus sont dérivées de fstream et de la classe iostream correspondante et sont conçues spécifiquement pour gérer les fichiers disque.
C++ fournit les opérations suivantes dans la gestion des fichiers :
- open() : création d'un fichier
- read() : lecture des données
- write : écriture de nouvelles données
- close() : Fermeture d'un fichier
Créer et ouvrir un fichier
Nous créons/ouvrons un fichier en spécifiant le chemin du fichier et le mode d'opération. Les opérations peuvent être la lecture, l'écriture, l'ajout et la troncature.
open(nom_fichier, mode);
Voici les différents modes pour ouvrir un fichier
- ios::app - Le mode ajout(append). La sortie envoyée au fichier lui est ajoutée à la fin.
- ios::ate - Ouvrir un fichier pour la sortie et déplacer le contrôle de lecture/écriture à la fin du fichier.
- ios::in - Ouvrir un fichier pour la lecture.
- ios::out - Ouvrir un fichier en écriture.
- ios::trunc - Si le fichier existe déjà, son contenu sera tronqué avant d'ouvrir le fichier.
Il est possible d'utiliser deux modes en même temps. Vous les combinez en utilisant le l'opérateur logique | (OU).
#include <iostream> #include <fstream> using namespace std; int main() { fstream fichier; fichier.open("etd.txt", ios::out); if (!fichier) { cout << "Fichier non cree!"; } else { cout << "Fichier cree avec succes!"; // fermer le fichier fichier.close(); } return 0; }
Fermer un fichier
Une fois qu'un programme C++ se termine, il
- Vide le flux
- Libère la mémoire allouée
- Ferme les fichiers ouverts.
Cependant, en tant que programmeur, vous devez apprendre à fermer les fichiers ouverts avant la fin du programme. Les objets fstream, ofstream et ifstream ont la fonction close() pour fermer les fichiers.
objet_fstream.close()
Lecture les données d'un fichier
Vous lisez les informations d'un fichier dans votre programme en utilisant l'opérateur d'extraction de flux (>>) tout comme vous utilisez cet opérateur pour saisir des informations à partir du clavier. La seule différence est que vous utilisez un objet ifstream ou fstream au lieu de l'objet cin.
#include <iostream> #include <fstream> #include <string> using namespace std; int main() { fstream fichier; string ligne; fichier.open("etd.txt", ios::in); if (!fichier) { cout << "Ce fichier n'existe pas"; } else { // tandis que nous n'avons pas atteint la fin du fichier while (!fichier.eof()) { fichier >>ligne; // lire une ligne cout << ligne << endl; // afficher la ligne lue } // fermer le fichier fichier.close(); } return 0; }
Mostafa Ismail Sara Adam
écrire des données dans un fichier
Vous pouvez écrire dans un fichier directement depuis votre programme C++. Vous utilisez l'opérateur d'insertion de flux ( <<) pour cela.
#include <iostream> #include <fstream> #include <string> using namespace std; int main() { fstream fichier; string ligne; fichier.open("etd.txt", ios::out); if (!fichier) { cout << "Ce fichier n'existe pas"; } else { // fournir une chaine de caractère cout << "Saisir une chaine de caracteres : "; getline(cin,ligne); // écrire la ligne lue dans le fichier fichier << ligne; fichier.close(); } return 0; }
Une fois que l'utilisateur a saisi la chaîne "Hello from my lovely Morocco", le contenu de "etd.txt" devient
Hello from my lovely Morocco