Clarence W | Bonjour, je cherche à lire un fichier binaire dont je sais que le contenu est valide (je le lis sans problème en c# avec un binaryReader).
Je désire le lire dans mon appli c++ mais la lecture ne me renvoie pas du tout les bonnes valeurs: voilà le code qui pose problème:
Code :
- /** Extraction des sommets du graphe à partir du fichier NDS */
- void extraireSommets(ifstream &in){
- IDSommet geomID ; // IDSommet = unsigned int ....
- IDSommet premiereArete ;
- // Lecture de l'identifiant geom:
- lireBinaire(in , geomID);
- // Lecture de l'indice de l'arête
- lireBinaire(in , premiereArete);
- sommets.push_back(GeomVersSommet(geomID,premiereArete,0 ));
- for (IDSommet sommet = 0; sommet < n ; sommet++){
- // Lecture de l'identifiant geom:
- lireBinaire(in , geomID);
- // Lecture de l'indice de l'arête
- lireBinaire(in , premiereArete);
- cout<<geomID<<" "<<premiereArete<<endl;
- sommets.push_back(GeomVersSommet(geomID,premiereArete,0 ));
- sommets[sommet-1].p3 = premiereArete-1;
- }
- sommets[n-1].p3 = n-1;
- }
- //...
- /** Lecture d'une valeur binaire dans le flux de fichier spécifié */
- template < typename type_val >
- inline void lireBinaire(ifstream& in, type_val& v) {
- //cout<<"sizeof(v): "<<v<<" :"<<sizeof(v)<<endl;
- in.read((char*)&v, sizeof(v));
- }
|
que j'appelle avec:
Code :
- ifstream in2(fichierNDS.c_str());
- if (!in2.is_open()) { cerr << "Impossible d'ouvrir le fichier " << fichierNDS << endl; exit(1); }
- extraireSommets(in2);
- in2.close();
|
Je ne vois pas d'où vient le problème ... Existe t'il un équivalent libre de la classe binaryReader du framework de visual ? (J'utilise mingw + Gcc 4.3.0 sous code::block et je n'ai pas envie de changer de compilo...).
Cordialement,
|