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)
.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*.
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