【发布时间】:2010-01-12 05:08:07
【问题描述】:
我尝试在 C++ 中将类对象写入和读取二进制文件。我不想单独编写数据成员,而是一次编写整个对象。举个简单的例子:
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;
}
但是运行输出显示,应该写入二进制文件的 mm.i 的值没有被读取并正确分配给 mm2.i
$ ./main
3
2
2
那有什么问题呢?
一般在二进制文件中写入或读取类的对象时应注意什么?
【问题讨论】: