Intento escribir y leer el objeto de clase en y desde el archivo binario en C++. No quiero escribir el miembro de datos individualmente, sino que escribo todo el objeto a la vez. Para un ejemplo simple:Escribir y leer el objeto de clase en y desde el archivo binario
class MyClass {
public:
int i;
MyClass(int n) : i(n) {}
MyClass() {}
void read(ifstream *in) { in->read((char *) this, sizeof(MyClass)); }
void write(ofstream *out){ out->write((char *) this, sizeof(MyClass));}
};
int main(int argc, char * argv[]) {
ofstream out("/tmp/output");
ifstream in("/tmp/output");
MyClass mm(3);
cout<< mm.i << endl;
mm.write(&out);
MyClass mm2(2);
cout<< mm2.i << endl;
mm2.read(&in);
cout<< mm2.i << endl;
return 0;
}
Sin embargo, el programa de salida de funcionamiento que el valor de mm.i supuestamente escribe en el archivo binario no se lee y se asigna a mm2.i correctamente
$ ./main
3
2
2
Así que lo que está mal ¿con eso?
¿Qué debo tener en cuenta cuando generalmente escribo o leo un objeto de una clase en o desde un archivo binario?
Gracias! ¿Es posible definir un solo objeto para la escritura de archivos y la lectura en C++? Recuerdo que es posible en C. – Tim
@Tim.Por ejemplo, puede tener una secuencia de archivos abierta para leer y escribir. –
En mi opinión, la respuesta de Yann Ramin es mucho más útil. Él explica esta idea de enrojecimiento, y también indica una mejor manera con el impulso. – MeM