Travailler avec des Fichiers Binaires en Utilisant fstream
Dans cette étape, vous apprendrez à travailler avec des fichiers binaires en utilisant la classe fstream en C++. Les fichiers binaires stockent les données dans leur format binaire brut, ce qui est différent des fichiers texte et utile pour stocker efficacement des données structurées.
Créez un nouveau fichier C++ nommé binary_files.cpp :
touch ~/project/binary_files.cpp
Ajoutez le code suivant au fichier binary_files.cpp :
#include <iostream>
#include <fstream>
#include <string>
// Structure simple pour démontrer l'écriture de fichiers binaires
struct Student {
int id;
char name[50];
double gpa;
};
void writeBinaryFile() {
std::fstream binaryFile("students.bin", std::ios::out | std::ios::binary);
if (!binaryFile) {
std::cerr << "Error opening file for writing!" << std::endl;
return;
}
// Créer des enregistrements d'étudiants
Student students[3] = {
{1, "John Doe", 3.5},
{2, "Alice Smith", 3.8},
{3, "Bob Johnson", 3.2}
};
// Écrire la structure entière dans le fichier binaire
binaryFile.write(reinterpret_cast<char*>(students), sizeof(students));
binaryFile.close();
std::cout << "Binary file written successfully!" << std::endl;
}
void readBinaryFile() {
std::fstream binaryFile("students.bin", std::ios::in | std::ios::binary);
if (!binaryFile) {
std::cerr << "Error opening file for reading!" << std::endl;
return;
}
Student students[3];
// Lire la structure entière depuis le fichier binaire
binaryFile.read(reinterpret_cast<char*>(students), sizeof(students));
std::cout << "Student Records:" << std::endl;
for (int i = 0; i < 3; ++i) {
std::cout << "ID: " << students[i].id
<< ", Name: " << students[i].name
<< ", GPA: " << students[i].gpa << std::endl;
}
binaryFile.close();
}
int main() {
// Écrire le fichier binaire
writeBinaryFile();
// Lire le fichier binaire
readBinaryFile();
return 0;
}
Compilez le programme :
g++ binary_files.cpp -o binary_files
Exécutez l'exécutable :
./binary_files
Sortie exemple :
Binary file written successfully!
Student Records:
ID: 1, Name: John Doe, GPA: 3.5
ID: 2, Name: Alice Smith, GPA: 3.8
ID: 3, Name: Bob Johnson, GPA: 3.2
Points clés concernant les fichiers binaires :
- Utiliser le drapeau
std::ios::binary pour le mode binaire
- Méthodes
write() et read() pour les données binaires
reinterpret_cast utilisé pour la conversion entre les types
- Utile pour stocker efficacement des données structurées
- Préserve la représentation binaire exacte des données
Vous pouvez considérer les fichiers binaires comme un plan précis. Ils stockent les données exactement telles qu'elles existent en mémoire, sans aucune conversion textuelle.