[visual 2003] [ifstream] problème de tellg en ios::binary
problème de tellg en ios::binary [visual 2003] [ifstream] - C++ - Programmation
MarshPosté le 22-02-2006 à 16:57:22
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
Marsh Posté le 22-02-2006 à 16:57:22
Ce bout de code
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