C++ Gestion des fichiers : comment ouvrir, écrire, lire et fermer des fichiers dans C++

Qu'est-ce que la gestion des fichiers dans C++?

Les fichiers stockent les données de manière permanente sur un périphérique de stockage. Avec la gestion des fichiers, la sortie d'un programme peut être stockée dans un fichier. Diverses opérations peuvent être effectuées sur les données dans le fichier.

Un flux est une abstraction d'un périphérique sur lequel des opérations d'entrée/sortie sont effectuées. Vous pouvez représenter un flux comme une destination ou une source de caractères de longueur indéfinie. Cela sera déterminé par leur utilisation. C++ vous fournit une bibliothèque contenant des méthodes de gestion des fichiers. Discutons-en.

La bibliothèque fstream

La bibliothèque fstream fournit C++ programmeurs avec trois classes pour travailler avec des fichiers. Ces cours comprennent :

  • hors flux– Cette classe représente un flux de sortie. Il est utilisé pour créer des fichiers et écrire des informations dans des fichiers.
  • ifstream– Cette classe représente un flux d’entrée. Il est utilisé pour lire les informations des fichiers de données.
  • fstream– Cette classe représente généralement un flux de fichiers. Il est livré avec des fonctionnalités ofstream/ifstream. Cela signifie qu'il est capable de créer des fichiers, d'écrire dans des fichiers et de lire des fichiers de données.

L'image suivante simplifie la compréhension :

bibliothèque fstream
bibliothèque fstream

Pour utiliser les classes ci-dessus de la bibliothèque fstream, vous devez les inclure dans votre programme en tant que fichier d'en-tête. Bien entendu, vous utiliserez la directive du préprocesseur #include. Vous devez également inclure le fichier d'en-tête iostream.

Comment ouvrir des fichiers

Avant d'effectuer toute opération sur un fichier, vous devez d'abord l'ouvrir. Si vous devez écrire dans le fichier, ouvrez-le à l'aide des objets fstream ou ofstream. Si vous avez uniquement besoin de lire le fichier, ouvrez-le à l'aide de l'objet ifstream.

Les trois objets, c'est-à-dire fstream, ofstream et ifstream, ont la fonction open() définie. La fonction prend cette syntaxe :

open (file_name, mode);
  • Le paramètre file_name désigne le nom du fichier à ouvrir.
  • Le paramètre mode est facultatif. Il peut prendre l'une des valeurs suivantes :
Valeur Description
ios :: application Le mode Ajouter. La sortie envoyée au fichier y est ajoutée.
ios :: mangé Il ouvre le fichier pour la sortie, puis déplace le contrôle de lecture et d'écriture à la fin du fichier.
ios :: dans Il ouvre le fichier pour une lecture.
ios :: sortie Il ouvre le fichier pour une écriture.
ios :: tronc Si un fichier existe, les éléments du fichier doivent être tronqués avant son ouverture.

Il est possible d'utiliser deux modes en même temps. Vous les combinez en utilisant le | (OU) opérateur.

1 Exemple:

#include <iostream>
#include <fstream>
using namespace std;
int main() {
	fstream my_file;
	my_file.open("my_file", ios::out);
	if (!my_file) {
		cout << "File not created!";
	}
	else {
		cout << "File created successfully!";
		my_file.close(); 
	}
	return 0;
}

Sortie :

Ouvrir les fichiers

Voici une capture d'écran du code :

Ouvrir les fichiers

Explication du code :

  1. Incluez le fichier d'en-tête iostream dans le programme pour utiliser ses fonctions.
  2. Incluez le fichier d'en-tête fstream dans le programme pour utiliser ses classes.
  3. Incluez l'espace de noms std dans notre code pour utiliser ses classes sans l'appeler.
  4. Appelez la fonction main(). La logique du programme doit aller à l'intérieur de son corps.
  5. Créez un objet de la classe fstream et donnez-lui le nom mon_fichier.
  6. Appliquez la fonction open() sur l'objet ci-dessus pour créer un nouveau fichier. Le mode out nous permet d'écrire dans le fichier.
  7. Utilisez l'instruction if pour vérifier si la création du fichier a échoué.
  8. Message à imprimer sur la console si le fichier n'a pas été créé.
  9. Fin du corps de l'instruction if.
  10. Utilisez une instruction else pour indiquer quoi faire si le fichier a été créé.
  11. Message à imprimer sur la console si le fichier a été créé.
  12. Appliquez la fonction close() sur l'objet pour fermer le fichier.
  13. Fin du corps de l'instruction else.
  14. Le programme doit renvoyer une valeur s'il se termine avec succès.
  15. Fin du corps de la fonction main().

Comment fermer des fichiers

Une fois par C++ Programme se termine, il automatiquement

  • vide les ruisseaux
  • 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. La fonction prend cette syntaxe :

void close();

Comment écrire dans des fichiers

Vous pouvez écrire dans un fichier directement depuis votre C++ programme. Pour cela, vous utilisez l'opérateur d'insertion de flux (<<). Le texte à écrire dans le fichier doit être placé entre guillemets.

Démontrons-le.

2 Exemple:

#include <iostream>
#include <fstream>
using namespace std;
int main() {
	fstream my_file;
	my_file.open("my_file.txt", ios::out);
	if (!my_file) {
		cout << "File not created!";
	}
	else {
		cout << "File created successfully!";
		my_file << "Guru99";
		my_file.close();
	}
	return 0;
}

Sortie :

Comment écrire dans des fichiers

Voici une capture d'écran du code :

Comment écrire dans des fichiers

Explication du code :

  1. Incluez le fichier d'en-tête iostream dans le programme pour utiliser ses fonctions.
  2. Incluez le fichier d'en-tête fstream dans le programme pour utiliser ses classes.
  3. Incluez l'espace de noms std dans le programme pour utiliser ses classes sans l'appeler.
  4. Appelez la fonction main(). La logique du programme doit être ajoutée dans le corps de cette fonction.
  5. Créez une instance de la classe fstream et donnez-lui le nom my_file.
  6. Utilisez la fonction open() pour créer un nouveau fichier nommé my_file.txt. Le fichier sera ouvert en mode sortie pour y écrire.
  7. Utilisez une instruction if pour vérifier si le fichier n'a pas été ouvert.
  8. Texte à imprimer sur la console si le fichier n'est pas ouvert.
  9. Fin du corps de l'instruction if.
  10. Utilisez une instruction else pour indiquer quoi faire si le fichier a été créé.
  11. Texte à imprimer sur la console si le fichier a été créé.
  12. Écrivez du texte dans le fichier créé.
  13. Utilisez la fonction close() pour fermer le fichier.
  14. Fin du corps de l'instruction else.
  15. Le programme doit renvoyer de la valeur une fois terminé.
  16. Fin du corps de la fonction main().

Comment lire à partir de fichiers

Vous pouvez lire les informations des fichiers dans votre C++ programme. Ceci est possible en utilisant l'opérateur d'extraction de flux (>>). Vous utilisez l'opérateur de la même manière que vous l'utilisez pour lire la saisie utilisateur à partir du clavier. Cependant, au lieu d'utiliser l'objet cin, vous utilisez l'objet ifstream/fstream.

3 Exemple:

#include <iostream>
#include <fstream>
using namespace std;
int main() {
	fstream my_file;
	my_file.open("my_file.txt", ios::in);
	if (!my_file) {
		cout << "No such file";
	}
	else {
		char ch;

		while (1) {
			my_file >> ch;
			if (my_file.eof())
				break;

			cout << ch;
		}

	}
	my_file.close();
	return 0;
}

Sortie :

Lire à partir de fichiers

Ce fichier n'existe pas

Voici une capture d'écran du code :

Lire à partir de fichiers

Explication du code :

  1. Incluez le fichier d'en-tête iostream dans le programme pour utiliser ses fonctions.
  2. Incluez le fichier d'en-tête fstream dans le programme pour utiliser ses classes.
  3. Incluez l'espace de noms std dans le programme pour utiliser ses classes sans l'appeler.
  4. Appelez la fonction main(). La logique du programme doit être ajoutée dans le corps de cette fonction.
  5. Créez une instance de la classe fstream et donnez-lui le nom my_file.
  6. Utilisez la fonction open() pour créer un nouveau fichier nommé my_file.txt. Le fichier sera ouvert en mode in pour pouvoir le lire.
  7. Utilisez une instruction if pour vérifier si le fichier n'existe pas.
  8. Texte à imprimer sur la console si le fichier n'est pas trouvé.
  9. Fin du corps de l'instruction if.
  10. Utilisez une instruction else pour indiquer quoi faire si le fichier est trouvé.
  11. Créer un variable de caractère nommé ch.
  12. Créer un boucle tout en pour parcourir le contenu du fichier.
  13. Écrire/stocker le contenu du fichier dans la variable ch.
  14. Utilisez une condition if et une fonction eof() c'est-à-dire la fin du fichier, pour garantir que le compilateur continue de lire le fichier si la fin n'est pas atteinte.
  15. Utilisez une instruction break pour arrêter la lecture du fichier une fois la fin atteinte.
  16. Imprimez le contenu de la variable ch sur la console.
  17. Fin du corps while.
  18. Fin du corps de l'instruction else.
  19. Appelez la fonction close() pour fermer le fichier.
  20. Le programme doit renvoyer de la valeur une fois terminé.
  21. Fin du corps de la fonction main().

Résumé

  • Avec la gestion des fichiers, la sortie d'un programme peut être envoyée et stockée dans un fichier.
  • Un certain nombre d'opérations peuvent ensuite être appliquées aux données dans le fichier.
  • Un flux est une abstraction qui représente un périphérique sur lequel les opérations d'entrée/sortie sont effectuées.
  • Un flux peut être représenté comme une destination ou une source de caractères de longueur indéfinie.
  • La bibliothèque fstream fournit C++ programmeurs avec des méthodes de gestion de fichiers.
  • Pour utiliser la bibliothèque, vous devez l'inclure dans votre programme à l'aide de la directive de préprocesseur #include.