Test Foro de elhacker.net SMF 2.1

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

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:

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
fout.write( (char *) &pl, sizeof pl)

y no simplemente
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