next up previous contents index
suivant: Programmation à objets monter: main précédent: Lecture et écriture d'octets   Table des matières   Index


Modes d'accès à un fichier

Outre les modes simples d'accès à un fichier, en lecture, en écriture et en ajout, il est souvent nécessaire de combiner lecture et écriture en modifiant la position courante du flot dans le fichier. On obtient la position courante dans un flot d'écriture à l'aide de la méthode tellp() (p pour put), et dans un flot de lecture à l'aide de tellg() (avec g pour get). On peut se positionner en écriture à l'aide de la méthode seekp et en lecture à l'aide de seekg ; ces deux méthodes ont deux paramètres, le premier est un entier qui indique un déplacement, le second est une constante qui indique l'origine du déplacement (le début du fichier, la fin, ou la position courante).

Pour ouvrir un flot à la fois en lecture et en écriture sur un fichier (pour permettre l'une ou l'autre de ces opérations), on doit déclarer un flot de type fstream et spécifier la disjonction de deux modes d'accès. Voici un exemple :


  fstream in_out("out.txt", ios::out | ios::in); 
  in_out.seekp(0, ios::end);             // positionnement à la fin
  in_out << "etc, ...\n";                // ajout de caractères
  in_out.seekp(0, ios::beg);             // positionnement au début
  in_out << "C'est le début";            // écrase !
  in_out.seekp(3, ios::cur);             // avance de 3
  in_out.close();

L'usage combiné de seekg et tellg permet de déterminer facilement le nombre d'octets d'un fichier en lecture :


  ifstream ifs("fichier");
  ifs.seekg(0, ios::end);                // positionnement à la fin 
  cout << ifs.tellg() << " octets\n";    // nombre d'octets


next up previous contents index
suivant: Programmation à objets monter: main précédent: Lecture et écriture d'octets   Table des matières   Index
R Lalement