Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: skan en 13 Agosto 2013, 21:56 pm



Título: Escribiendo un struct en un archivo en binario
Publicado por: skan en 13 Agosto 2013, 21:56 pm
Buenas

Sigo leyéndome el libro de Prata y hay una sección en la que explican como escribir archivos en modo binario.

Por ejemplo definen la estructura

Código:
const int LIM = 20;
struct planet
{
char name[LIM];
double population;
double g;
};
planet pl;

Y dicen que puedes usar el modo de escritura texto, en el que hay que especificar cada miembro de la estructura uno a uno, o se puede usar el binario todo de golpe:

Código:
ofstream fout("planets.dat",
ios_base:: out | ios_base::app | ios_base::binary);
fout.write( (char *) &pl, sizeof pl);


Lo que no entiendo es porque se pone
Código:
fout.write( (char *) &pl, sizeof pl)

y no simplemente
Código:
fout.write( pl, sizeof pl)


Título: Re: Escribiendo un struct en un archivo
Publicado por: amchacon en 13 Agosto 2013, 22:00 pm
.write espera un puntero char* como argumento. Ahí se hace el apaño cogiendo la dirrecion de la variable (con el operador &) y convirtiendo esa dirrecion en un puntero char*.


Título: Re: Escribiendo un struct en un archivo en binario
Publicado por: skan en 13 Agosto 2013, 22:04 pm
Gracias, que rápido contestas.
No sabía que write sólo aceptaba un char*
estas son las cosas que no me gustan demasiado de C++, que te meten punteros por todas partes aunque no sean aconsejables