Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Industrial programming >> Langue C

Fichiers et flux C++

Jusqu'à présent, nous avons utilisé le iostream bibliothèque standard, qui fournit cin et couter méthodes pour lire à partir de l'entrée standard et écrire sur la sortie standard respectivement.

Ce tutoriel vous apprendra comment lire et écrire à partir d'un fichier. Cela nécessite une autre bibliothèque C++ standard appelée fstream , qui définit trois nouveaux types de données −

du flux

Ce type de données représente le flux de fichiers de sortie et est utilisé pour créer des fichiers et pour écrire des informations dans les fichiers.

ifstream

Ce type de données représente le flux du fichier d'entrée et est utilisé pour lire les informations des fichiers.

fstream

Ce type de données représente le flux de fichiers en général et possède les capacités de ofstream et ifstream, ce qui signifie qu'il peut créer des fichiers, écrire des informations dans des fichiers et lire des informations à partir de fichiers.

Sr.No Type de données et description
1
2
3

Pour effectuer le traitement de fichiers en C++, les fichiers d'en-tête et doivent être inclus dans votre fichier source C++.

Ouvrir un fichier

Un fichier doit être ouvert avant de pouvoir le lire ou y écrire. Soit du flux ou fstream objet peut être utilisé pour ouvrir un fichier en écriture. Et l'objet ifstream est utilisé pour ouvrir un fichier à des fins de lecture uniquement.

Voici la syntaxe standard de la fonction open(), qui est membre des objets fstream, ifstream et ofstream.

void open(const char *filename, ios::openmode mode);

Ici, le premier argument spécifie le nom et l'emplacement du fichier à ouvrir et le second argument de open() La fonction membre définit le mode dans lequel le fichier doit être ouvert.

ios ::app

Mode d'ajout. Toutes les sorties de ce fichier doivent être ajoutées à la fin.

ios::ate

Ouvrez un fichier pour la sortie et déplacez le contrôle de lecture/écriture à la fin du fichier.

ios ::in

Ouvrir un fichier en lecture.

ios::out

Ouvrir un fichier pour l'écriture.

ios ::trunc

Si le fichier existe déjà, son contenu sera tronqué avant l'ouverture du fichier.

Sr.No Indicateur de mode et description
1
2
3
4
5

Vous pouvez combiner deux ou plusieurs de ces valeurs par OU les réunissant. Par exemple, si vous souhaitez ouvrir un fichier en mode écriture et que vous souhaitez le tronquer au cas où il existe déjà, voici la syntaxe −

ofstream outfile;
outfile.open("file.dat", ios::out | ios::trunc );

De la même manière, vous pouvez ouvrir un fichier à des fins de lecture et d'écriture comme suit −

fstream  afile;
afile.open("file.dat", ios::out | ios::in );

Fermer un fichier

Lorsqu'un programme C++ se termine, il vide automatiquement tous les flux, libère toute la mémoire allouée et ferme tous les fichiers ouverts. Mais c'est toujours une bonne pratique qu'un programmeur ferme tous les fichiers ouverts avant la fin du programme.

Voici la syntaxe standard de la fonction close(), qui est membre des objets fstream, ifstream et ofstream.

void close();

Écrire dans un fichier

Lors de la programmation C++, vous écrivez des informations dans un fichier à partir de votre programme en utilisant l'opérateur d'insertion de flux (<<) tout comme vous utilisez cet opérateur pour afficher des informations à l'écran. La seule différence est que vous utilisez un ofstream ou fstream objet au lieu du cout objet.

Lecture à partir 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 ifstream ou fstream objet au lieu du cin objet.

Exemple de lecture et d'écriture

Voici le programme C++ qui ouvre un fichier en mode lecture et écriture. Après avoir écrit les informations saisies par l'utilisateur dans un fichier nommé afile.dat, le programme lit les informations du fichier et les affiche à l'écran −

Démo en direct
#include <fstream>
#include <iostream>
using namespace std;
 
int main () {
   char data[100];

   // open a file in write mode.
   ofstream outfile;
   outfile.open("afile.dat");

   cout << "Writing to the file" << endl;
   cout << "Enter your name: "; 
   cin.getline(data, 100);

   // write inputted data into the file.
   outfile << data << endl;

   cout << "Enter your age: "; 
   cin >> data;
   cin.ignore();
   
   // again write inputted data into the file.
   outfile << data << endl;

   // close the opened file.
   outfile.close();

   // open a file in read mode.
   ifstream infile; 
   infile.open("afile.dat"); 
 
   cout << "Reading from the file" << endl; 
   infile >> data; 

   // write the data at the screen.
   cout << data << endl;
   
   // again read the data from the file and display it.
   infile >> data; 
   cout << data << endl; 

   // close the opened file.
   infile.close();

   return 0;
}

Lorsque le code ci-dessus est compilé et exécuté, il produit l'exemple d'entrée et de sortie suivant -

$./a.out
Writing to the file
Enter your name: Zara
Enter your age: 9
Reading from the file
Zara
9

Les exemples ci-dessus utilisent des fonctions supplémentaires de l'objet cin, comme la fonction getline() pour lire la ligne de l'extérieur et la fonction ignore() pour ignorer les caractères supplémentaires laissés par l'instruction de lecture précédente.

Pointeurs de position de fichier

Les deux istream et ostream fournissent des fonctions membres pour repositionner le pointeur de position de fichier. Ces fonctions membres sont seekg ("seek get") pour istream et seekp ("seek put") pour ostream.

L'argument de seekg et seekp est normalement un entier long. Un deuxième argument peut être spécifié pour indiquer la direction de recherche. La direction de recherche peut être ios::beg (par défaut) pour le positionnement par rapport au début d'un flux, ios::cur pour le positionnement par rapport à la position actuelle dans un flux ou ios::end pour le positionnement par rapport à la fin d'un flux.

Le pointeur de position de fichier est une valeur entière qui spécifie l'emplacement dans le fichier sous la forme d'un nombre d'octets à partir de l'emplacement de départ du fichier. Quelques exemples de positionnement du pointeur de position de fichier "get" sont −

// position to the nth byte of fileObject (assumes ios::beg)
fileObject.seekg( n );

// position n bytes forward in fileObject
fileObject.seekg( n, ios::cur );

// position n bytes back from end of fileObject
fileObject.seekg( n, ios::end );

// position at end of fileObject
fileObject.seekg( 0, ios::end );

Langue C

  1. Variables, littéraux et constantes C++
  2. Classes et objets C++
  3. Fonction amie C++ et classes amies
  4. Gestion des fichiers C
  5. Répertoire Python et gestion des fichiers
  6. Structures et classes en C++
  7. C - Fichiers d'en-tête
  8. Date et heure C++
  9. Surcharge C++ (opérateur et fonction)