Pour gérer les fichiers, trois autres types sont définis dans la bibliothèque fstream.h :
open_mode est un type énuméré qui peut prendre les valeurs
suivantes :
Ces modes peuvent être couplés par un ou logique.
seek_dir est également un type énuméré qui peut prendre
les valeurs suivantes :
#include <fstream.h> const int MaxBuffer=256 ; const char nomFichierIn[]="./essai.bat" ; const char nomFichierOut[]="./sortie.txt" ; int main(void) { ifstream ficIn ; ofstream ficOut ; char buffer[MaxBuffer] ; ficIn.open(nomFichierIn) ; if (ficIn == 0) { cerr << "erreur ouverture en lecture : " << nomFichierIn << endl ; return 1 ; } ficOut.open(nomFichierOut) ; if (ficOut==0) { cerr << "erreur ouverture en ecriture : " << nomFichierOut << endl ; return 2 ; } ficIn.getline(buffer,MaxBuffer) ; while (ficIn.good()) { ficOut << buffer << endl ; // ne pas oublier endl ! ficIn.getline(buffer,MaxBuffer) ; } ficIn.close() ; ficOut.close() ; cout << "copie terminee..." << endl ; return 0 ; }Les opérations open() et close() sont obligatoires. Il est important de toujours vérifier le bon déroulement de l'ouverture du fichier. Pour stocker des données formattées, il est nécessaire d'utiliser read(const void *,int taille) et write(const void *, int taille)
#include <fstream.h> const char nomFic[]="compteur.dat" ; int main(void) { fstream ficInOut ; int cpt ; ficInOut.open(nomFic,ios::in|ios::out|ios::nocreate) ; if (ficInOut == 0) { cpt=0 ; ficInOut.open(nomFic,ios::out) ; if (ficInOut == 0) { cerr << "erreur ouverture en ecriture fichier" << endl ; return 1 ; } } else ficInOut.read(&cpt, sizeof(cpt)) ; cpt++ ; cout << "valeur du compteur : " << cpt << endl ; ficInOut.seekp(0) ; ficInOut.write(&cpt,sizeof(cpt)) ; ficInOut.close() ; return 0 ; }