[visual 2003] [ifstream] problème de tellg en ios::binary

problème de tellg en ios::binary [visual 2003] [ifstream] - C++ - Programmation

Marsh Posté le 22-02-2006 à 16:57:22    

Ce bout de code
 

Code :
  1. #include <iostream>
  2. #include <fstream>
  3. #include <string>
  4. #include <stdexcept>
  5. using namespace std;
  6. ...
  7. bla bla
  8. ...
  9. ifstream i("toto.dat", ios::binary || ios::in);
  10. int j = 0;
  11. for (int x = 0 ; x < 1000; x++)
  12. {
  13. cout << "\ntellg is "<<i.tellg();
  14. i.read(reinterpret_cast<char*>(&j),sizeof(int));
  15. }


 
ne fonctionne pas comme je le souhaiterais sous Visual Studio 2003.
Ce que je veux dans l'exemple, c'est lire des entiers stockés en binaire (32 bits) dans un fichier.
Je m'attends naïvement à ce que la trace "tellg is xxx" ne m'affiche que des multiples de 4.
hé ben raté, de temps en temps tellg me donne un écart de 5 entre 2 itérations.
 
d'où ma question: qu'ai-je donc fait de mal ?
 
PS : ce code ne sert à rien, c'est le plus petit bout de code qui permet de montrer que tellg ne fait pas ce que je veux
PS2 : problème pas forcément facile à reproduire sans le bon fichier binaire toto.dat
PS3 : toto.dat n'est pas ouvert par d'autres process et il fait bien plus de 4000 octets

Reply

Marsh Posté le 22-02-2006 à 16:57:22   

Reply

Marsh Posté le 22-02-2006 à 17:03:29    

c'est pas ||, c'est |

Reply

Marsh Posté le 22-02-2006 à 17:06:32    

chrisbk a écrit :

c'est pas ||, c'est |


Merci.
 
Je réfléchirai avant de poster la prochaine fois, promis.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed