Ce bout de code
Code :
- #include <iostream>
- #include <fstream>
- #include <string>
- #include <stdexcept>
- using namespace std;
- ...
- bla bla
- ...
- ifstream i("toto.dat", ios::binary || ios::in);
- int j = 0;
- for (int x = 0 ; x < 1000; x++)
- {
- cout << "\ntellg is "<<i.tellg();
- i.read(reinterpret_cast<char*>(&j),sizeof(int));
- }
|
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