Trabajar con Archivos Binarios Usando fstream
En este paso, aprenderá a trabajar con archivos binarios utilizando la clase fstream en C++. Los archivos binarios almacenan datos en su formato binario puro, lo cual es diferente de los archivos de texto y útil para almacenar datos estructurados de manera eficiente.
Cree un nuevo archivo C++ llamado binary_files.cpp:
touch ~/project/binary_files.cpp
Agregue el siguiente código al archivo binary_files.cpp:
#include <iostream>
#include <fstream>
#include <string>
// Estructura simple para demostrar la escritura en archivos binarios
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;
}
// Crear algunos registros de estudiantes
Student students[3] = {
{1, "John Doe", 3.5},
{2, "Alice Smith", 3.8},
{3, "Bob Johnson", 3.2}
};
// Escribir la estructura completa en el archivo binario
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];
// Leer la estructura completa desde el archivo binario
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() {
// Escribir archivo binario
writeBinaryFile();
// Leer archivo binario
readBinaryFile();
return 0;
}
Compile el programa:
g++ binary_files.cpp -o binary_files
Ejecute el ejecutable:
./binary_files
Salida de ejemplo:
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
Puntos clave sobre los archivos binarios:
- Use el indicador
std::ios::binary para el modo binario
- Métodos
write() y read() para datos binarios
- Se utiliza
reinterpret_cast para convertir entre tipos
- Útil para almacenar datos estructurados de manera eficiente
- Conserva la representación binaria exacta de los datos
Puede pensar en los archivos binarios como un plano preciso. Almacenan los datos exactamente como existen en la memoria, sin ninguna conversión de texto.