2012-02-11 15 views
11

Tengo una pregunta muy simple, que me resulta difícil, ya que esta es la primera vez que intento trabajar con archivos binarios, y no los entiendo del todo. Todo lo que quiero hacer es escribir un entero en un archivo binario.escribiendo entero en archivo binario (C++)

Aquí es cómo lo hice:

#include <fstream> 
using namespace std; 
int main() { 
    int num=162; 
    ofstream file ("file.bin", ios::binary); 
    file.write ((char *)&num, sizeof(num)); 
    file.close(); 
    return 0; 
} 

¿Me podría decir si hice algo mal, y qué?

La parte que me está causando problemas es la línea con file.write, no lo entiendo.

Gracias de antemano.

+1

¿Funciona? ¿Cómo difiere de lo que esperas? –

+2

Consejos para Nitpick: 1) diga 'reinterpret_cast (& num)', y omita 'file.close()' y 'return 0', ya que todos estos suceden automáticamente. –

+0

@KerrekSB ¿Podría explicar qué hace reinterpret_cast (& num)? – eqagunn

Respuesta

19

La parte que me está causando problemas es la línea con file.write, no lo entiendo .

Si usted lee la documentación de ofstream.write() método, se verá que solicita dos argumentos:

  1. un puntero a un bloque de datos con el contenido a ser escrito;

  2. un valor entero que representa el tamaño , en bytes, de este bloque.

Esta declaración simplemente da a estas dos piezas de información para ofstream.write():

file.write(reinterpret_cast<const char *>(&num), sizeof(num)); 

&num es la dirección del bloque de datos (en este caso solo una variable de número entero), sizeof(num) es el tamaño de este bloque (por ejemplo, 4 bytes en plataformas Windows).