Tutoriales

Escribir archivos binarios en C++

En la programación C++, el procesamiento de archivos binarios es la base para almacenar y manipular datos sin procesar. Ya sea que esté trabajando con imágenes, archivos de audio o estructuras de datos personalizadas, la capacidad de escribir archivos binarios de manera eficiente es fundamental. Los archivos binarios almacenan datos en un formato ilegible para los humanos, lo que los hace adecuados para una variedad de aplicaciones, como almacenar estructuras complejas, imágenes o cualquier dato que no se ajuste a una representación simple basada en texto.

C++ proporciona Bibliotecas para interactuar con archivos binarios, específicamente la clase «ofstream», utilizada para escribir datos binarios. Esta característica permite a los desarrolladores crear, modificar y administrar archivos binarios sin problemas. Este artículo explora varios métodos y técnicas para escribir archivos binarios en C++, ilustrando sus aplicaciones y casos de uso.

Escribir archivos binarios usando C++

Para guardar datos en un archivo binario usando C++, se utiliza el método write(). Esta función escribe el número especificado de bytes en la secuencia especificada, comenzando en la posición del puntero «put». Si el indicador «poner» está al final, el archivo se expande. Sin embargo, si el puntero está dentro de un archivo, los nuevos datos sobrescribirán los caracteres existentes. Si se produce un error durante la escritura, la secuencia se marcará como en estado de error. Ahora, continuemos con el ejemplo para aprender a escribir archivos binarios usando algunas funciones simples integradas en C++.

Método 1: utilizar datos estructurados para escribir archivos binarios

En muchos casos, es posible que necesites escribir datos estructurados (como una estructura personalizada) en un archivo binario. Consideremos un ejemplo que contiene un registro de persona que incluye el nombre, la altura y la edad de la persona. Consulte el código que se proporciona a continuación y consulte las instrucciones:

#incluir

#incluir

Estructura gente {

personaje Nombre[50];

entero edad;

doble alto;

};

entero principal() {

estándar::salida Archivo de salida(«personas.bin», estándar::iOS::binario);

si (!Archivo de salida.abrió()) {

estándar::Chel «¡Error! ¡No se puede abrir el archivo para escribir!» estándar::endel;

devolver 1;

}

Renren 1 = {«Karsum Ilias», 25, 1,75};

Renren 2 = {«Karsum Bajwa», 30, 1,68};

Archivo de salida.Escribir(reinterpretar_castpersonaje*>(&persona 1), tamaño(persona 1));

Archivo de salida.Escribir(reinterpretar_castpersonaje*>(&persona 2), tamaño(persona 2));

Archivo de salida.cierre();

estándar::kut «El registro de esta persona se ha escrito correctamente en el archivo binario». estándar::endel;

devolver 0;

}

Aquí hay un desglose del código con detalles específicos. El programa primero define una estructura personalizada llamada «Persona». Contiene tres campos: nombre, edad y altura. El detalle de estos campos es el siguiente:

  • Nombre: Cadena utilizada para almacenar el nombre de la persona (máximo 50 caracteres)
  • edad: Un número entero para almacenar la edad de una persona.
  • alto: Un doble para almacenar la altura de una persona.

Después de definir la estructura «Persona», se inicia la función principal, que es el punto de entrada del programa. La primera línea del programa principal abre un archivo llamado «people.bin». Usamos «std::ofstream» para crear un archivo llamado «people.bin» para escribir datos en formato binario. Es importante comprobar si el archivo se abrió correctamente. De lo contrario, se mostrará un mensaje de error y el programa se detendrá. Entonces, con la ayuda de la condición «if» y la función is_open(), verificamos si el archivo se ha abierto correctamente.

Aquí se crean dos objetos «Persona». Definimos dos variables «persona1» y «persona2» de tipo «Persona». Asignamos nombres de variables, valores de edad y altura a «Kalsoom Ilyas» y «Kalsoom Bajwa».

Ahora que tenemos los datos para escribir en el archivo binario, usemos la función write() para realizar la funcionalidad real. Usamos «outFile.write» para escribir el contenido de cada objeto «Persona» en el archivo. «reinterpretar_cast(&persona1)» y «reinterpret_cast(&persona2)» convierte toda la estructura «Persona» (incluidos todos sus campos) en un flujo continuo de bytes adecuado para escribir en un archivo binario. Usamos «sizeof(person1)» y «sizeof(person2)» para escribir el tamaño de cada objeto «Persona» para garantizar que todos los datos se escriban correctamente.

Después de escribir datos en un archivo, es importante cerrarlo correctamente para que los datos no se pierdan en otras funciones. Usamos outFile.close() para liberar los recursos asociados con el archivo y garantizar que los datos se escriban con precisión. Finalmente, imprimimos un mensaje confirmando que los datos se escribieron exitosamente en el archivo binario.

Si explicamos este ejemplo en términos más simples, imaginemos un cuaderno especial que sólo puede almacenar información sobre personas en un idioma secreto. Este código crea un modelo para organizar la información (nombre, edad, altura). Abrió el cuaderno, completó la información de las dos personas, tradujo la información en palabras secretas y la escribió cuidadosamente en su interior. Luego apaga la computadora portátil de manera segura, preservando el perfil para uso futuro. Vea el resultado del programa en la siguiente instantánea:

Método 2: escribir números enteros en un archivo binario

En este método, se escribe una matriz de números enteros en un archivo binario llamado «enteros.bin». «reinterpretar_castPiense en una matriz de números enteros como una secuencia de caracteres (bytes) escritos en el archivo. Esto es especialmente importante cuando los archivos binarios tratan con datos de bytes sin procesar.

#incluir

#incluir

entero principal() {

estándar::salida Archivo de salida(«entero.bin», estándar::iOS::binario);

si (!Archivo de salida.abrió()) {

estándar::Chel «¡Error! ¡No se puede abrir el archivo para escribir!» estándar::endel;

devolver 1;

}

entero dígito[] = {42, 99, 1, 0};

Archivo de salida.Escribir(reinterpretar_castpersonaje*>(dígito), tamaño(dígito));

Archivo de salida.cierre();

estándar::kut «El número entero proporcionado se escribió correctamente en el archivo binario». estándar::endel;

devolver 0;

}

Aquí hay un desglose del código con detalles específicos:

«#incluir ” y “#incluir ” Introduzca las herramientas necesarias para procesar archivos e imprimir mensajes, como cin y write() respectivamente. “std::ofstream outFile(“integros.bin”, std::ios::binary);” Abra un archivo llamado “integers.bin”, std::ios::binary;” Archivo binario .bin», que solo puede almacenar números en contraseña (formato binario). Comprueba si el archivo está abierto. De lo contrario, se dará un mensaje de error.

La siguiente línea es «número int[] = {42, 99, -1, 0};» define una matriz llamada «números», que contiene los números enteros 42, 99, -1 y 0.(número), tamaño de (número));» Convierta con cuidado los números enteros a formato binario y escríbalos en el archivo «integer.bin». «outFile.close();» Cierra correctamente el archivo para mantener los números enteros seguros y organizados. Finalmente, se imprime un mensaje para confirmar que el número entero se almacenó correctamente en el archivo binario. Vea el siguiente resultado del programa para ver los resultados:

en conclusión

Escribir archivos binarios en C++ es una habilidad clave para procesar eficientemente varios tipos de datos. En esta exploración de la escritura de archivos binarios en C++, aprendimos cómo utilizar la clase «ofstream» para manejar datos binarios de manera eficiente. Ya sea que esté trabajando con números enteros simples o datos estructurados usando una estructura personalizada, el proceso implica abrir una secuencia de archivos, escribir los datos en formato binario y luego cerrar el archivo. Esta característica proporciona a los desarrolladores de C++ la flexibilidad para manejar una variedad de tipos de datos binarios, contribuyendo así a la versatilidad del lenguaje en aplicaciones que van desde programación a nivel de sistema hasta procesamiento multimedia.

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba