Fin de Fichier en C++

J'ai un n X 2 matrice stockée dans un fichier texte comme il est. J'essaie de le lire en C++

nb_try=0;
fin>>c_tmp>>gamma_tmp;
while (!fin.eof( ))      //if not at end of file, continue reading numbers
{
  //store
  cs_bit.push_back(c_tmp);
  gammas_bit.push_back(gamma_tmp);
  nb_try++;

  //read
  fin>>c_tmp;
  assert(!fin.fail( )); //fail at the nb_try=n   
  if(fin.eof( ))break;
  fin>>gamma_tmp; //get first number from the file (priming the input statement)
  assert(!fin.fail( ));    

}

La première assertion se trompe jamais, c'est à dire fin.fail( ) est vrai, quand nb_try==n, ce qui arrive quand on essaie de lire le premier numéro qui n'existe pas. Mais comment se fait-fin.eof( ) n'est pas vrai, après la lecture du dernier numéro? Signifie qu'il devient vrai que lors de la lecture du premier numéro, qui n'est ot existent? Aussi est-il vrai que la fin.fail( ) et de fin.eof( ) sont de plus vrai en même temps?

Merci et salutations!

OriginalL'auteur Tim | 2009-09-29