Bonjour,

Le code qui suit est extrait d'un fichier source de gmsh.
Il utilise le ''style c'' pour l'écriture.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
 
Bool binary = true;  
FILE *fp = fopen(name.c_str(), binary ? "wb" : "w");
 
    fprintf(fp, "$MeshFormat\n");
    fprintf(fp, "%g %d %d\n", version, binary ? 1 : 0, (int)sizeof(double));
    if(binary){
      int one = 1;
      fwrite(&one, sizeof(int), 1, fp);
      fprintf(fp, "\n");
    }
fprintf(fp, "$EndMeshFormat\n");
Je tente maintenant de lire un fichier binaire écrit avec le code précédent
en ''style c++'' mais je n'y arrive pas.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
std::ifstream file(name.c_str(),std::ios::in | std::ios::binary); 
 
std::string line;
file >> line;   
 
double v;
int type, size;
file >> version >> type >> size;
 
int one;
file.read((char*)(&one),sizeof(int));
 
file >> line;
Tout est lu correctement sauf one qui contient une valeur differente de 1.
Je ne vois pas trop ce qui ne va pas ...