Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1251 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  problème de lecture de fichier binaire

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

problème de lecture de fichier binaire

n°1881114
Clarence W
Posté le 05-05-2009 à 16:25:38  profilanswer
 

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 :
  1. /** Extraction des sommets du graphe à partir du fichier NDS */
  2. void extraireSommets(ifstream &in){
  3. IDSommet geomID  ;   // IDSommet = unsigned int ....
  4. IDSommet premiereArete  ;
  5.     // Lecture de l'identifiant geom:
  6.     lireBinaire(in , geomID);
  7.     // Lecture de l'indice de l'arête
  8.     lireBinaire(in , premiereArete);
  9.     sommets.push_back(GeomVersSommet(geomID,premiereArete,0 ));
  10.     for (IDSommet sommet = 0; sommet < n ; sommet++){
  11.         // Lecture de l'identifiant geom:
  12.         lireBinaire(in , geomID);
  13.         // Lecture de l'indice de l'arête
  14.         lireBinaire(in , premiereArete);
  15.         cout<<geomID<<" "<<premiereArete<<endl;
  16.         sommets.push_back(GeomVersSommet(geomID,premiereArete,0 ));
  17.         sommets[sommet-1].p3 = premiereArete-1;
  18.     }
  19.     sommets[n-1].p3 = n-1;
  20. }
  21. //...
  22. /** Lecture d'une valeur binaire dans le flux de fichier spécifié */
  23. template < typename type_val >
  24. inline void lireBinaire(ifstream& in, type_val& v) {
  25.     //cout<<"sizeof(v): "<<v<<" :"<<sizeof(v)<<endl;
  26.     in.read((char*)&v, sizeof(v));
  27. }


 
que j'appelle avec:
 

Code :
  1. ifstream in2(fichierNDS.c_str());
  2. if (!in2.is_open()) { cerr << "Impossible d'ouvrir le fichier " << fichierNDS << endl; exit(1); }
  3. extraireSommets(in2);
  4. 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,
 

mood
Publicité
Posté le 05-05-2009 à 16:25:38  profilanswer
 

n°1881118
olivthill
Posté le 05-05-2009 à 16:31:05  profilanswer
 

Par défaut, les fichiers sont ouverts en mode texte. Il faudrait lui indiquer qu'il faut faire une ouverture en mode binaire. Sous C, c'est fopen(filename, "rb" ), mais je ne sais plus ce que c'est en C++.

n°1881124
Clarence W
Posté le 05-05-2009 à 16:43:49  profilanswer
 

merci je m'en suis rappeller... "ifstream in2(fichierNDS.c_str(), ios::binary);" -> ça marche


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  problème de lecture de fichier binaire

 

Sujets relatifs
Probleme variable entrante function Oraclescript Unix de formatage de fichier HTML
[C] Matrice de structures : probleme de remplissageProblème d'inbricatation avec mes if
Fichier .vtdb ?????problème de recherche
Ouverture fichier excelProblème d'incrémentation de variable!
[SQL] Problème création BDD SQLHELP - qui peux crack un fichier excel
Plus de sujets relatifs à : problème de lecture de fichier binaire


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR