Numéro d'article: 146445 - Dernière mise à jour: mardi 5 juillet 2005 - Version: 1.1

PRB : istream::seekg() ne réinitialise pas l'état EOF

Sommaire

Agrandir tout | Réduire tout

Symptômes

La fonction istream::seekg() ne réinitialise pas l'état EOF (fin de fichier) lorsque le pointeur de flux est déjà de type EOF.

Résolution

Pour contourner ce problème, appelez ios::clear() pour le flux avant d'appeler istream::seekg().

Statut

Ce comportement est voulu par la conception même du produit.

Plus d'informations

Vous n'avez pas besoin d'appeler clear(), si le pointeur de flux n'est pas déjà de type EOF.

Exemple de code

/* Compile options needed: None
*/ 

// Input: A file with the name test.txt containing some characters.

#include <fstream.h>
#include <assert.h>

void main()
{
  fstream in("test.txt", ios::in);

  char c;
  int i = 0;

  // Count characters in file
  while (in.get(c))
     ++i;

  assert(in.eof());

  // Reset read pointer to beginning of file
  in.clear();
  in.seekg(0, ios::beg);

  // Check that file can now be read.
  // Fails without the in.clear() statement above.
  assert(!in.eof());
}
				

Les informations contenues dans cet article s'appliquent au(x) produit(s) suivant(s):
  • Microsoft Visual C++ 4.0 Édition Standard
  • Microsoft Visual C++ 4.1 Subscription
  • Microsoft Visual C++ 4.2 Édition Entreprise
  • Microsoft Visual C++ 4.2 Édition Professionnelle
  • Microsoft Visual C++ 5.0 Édition Entreprise
  • Microsoft Visual C++ 5.0 Édition Professionnelle
  • Microsoft Visual C++ 6.0 Édition Entreprise
  • Microsoft Visual C++ 6.0 Édition Professionnelle
  • Microsoft Visual C++, 32-bit Learning Edition 6.0
Mots-clés : 
kbmt kbcompiler kbcpponly kbprb KB146445 KbMtfr
Traduction automatiqueTraduction automatique
IMPORTANT : Cet article est issu du système de traduction automatique mis au point par Microsoft (http://support.microsoft.com/gp/mtdetails). Un certain nombre d?articles obtenus par traduction automatique sont en effet mis à votre disposition en complément des articles traduits en langue française par des traducteurs professionnels. Cela vous permet d?avoir accès, dans votre propre langue, à l?ensemble des articles de la base de connaissances rédigés originellement en langue anglaise. Les articles traduits automatiquement ne sont pas toujours parfaits et peuvent comporter des erreurs de vocabulaire, de syntaxe ou de grammaire (probablement semblables aux erreurs que ferait une personne étrangère s?exprimant dans votre langue !). Néanmoins, mis à part ces imperfections, ces articles devraient suffire à vous orienter et à vous aider à résoudre votre problème. Microsoft s?efforce aussi continuellement de faire évoluer son système de traduction automatique.
La version anglaise de cet article est la suivante: 146445  (http://support.microsoft.com/kb/146445/en-us/ )
L'INFORMATION CONTENUE DANS CE DOCUMENT EST FOURNIE PAR MICROSOFT SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE. L'UTILISATEUR ASSUME LE RISQUE DE L'UTILISATION DU CONTENU DE CE DOCUMENT. CE DOCUMENT NE PEUT ETRE REVENDU OU CEDE EN ECHANGE D'UN QUELCONQUE PROFIT.
 

Traductions disponibles