Bonjour,
Je me demande quelle est la meilleure manière en C++ de lire un fichier binaire.
La librairie standard est très vaste et semble contenir des tas de fonctions pour y arriver :
http://www.cplusplus.com/reference/fstream/ifstream/
Concrètement, je dispose d’une fichier binaire de plusieurs centaines de Mo dont je souhaite compter le nombre de caractères nuls :
#include <iostream>
#include <string>
#include <fstream>
using std::ios;
using std::cout;
using std::endl;
using std::string;
using std::ifstream;
int main()
{
// --- Ouverture du fichier binaire ---
ifstream f_bin ("binary_file.psq", ios::in | ios::binary);
if (!f_bin.is_open())
{
cout << "Erreur lors de l'ouverture du fichier !" << endl;
return 1;
}
// Obtenir la taille du fichier
int length;
f_bin.seekg (0, f_bin.end);
length = f_bin.tellg();
f_bin.seekg (0, f_bin.beg);
// Lire tous les caractères du fichier
// On souhaite compter le nombre de caractères nuls
char cara;
int cnt = 0;
for (int i = 0; i < length; ++i)
{
f_bin.read((char*) &cara, sizeof(char));
if (cara == '\0')
++cnt;
}
cout << "Nombre de caractères nuls dans ce fichier binaire : "
<< cnt
<< endl;
f_bin.close();
return 0;
}
Je pense que le code fonctionne.
Mais est-ce la meilleure approche pour lire un fichier binaire et parvenir à l’objectif efficacement ?
+0
-0