【发布时间】:2018-04-01 07:04:47
【问题描述】:
所以我有这段代码,其中有一个 Car 类,它有一个名为 save 的成员函数,它使用 THIS 指针将对象保存到文件中。我也有主要功能,在其中我将 Car 对象写入另一个文件,但对象保持不变,但是当在记事本中打开两个保存的文件时,它们似乎不同,为什么??...
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
class Car
{
private:
string name;
int model;
int numwheels;
public:
Car()
{
name = "No Name";
model = 0;
numwheels = 0;
}
void save()
{
ofstream ofs;
ofs.open("filename.txt", ios::out | ios::app);
ofs.write((char*)this, sizeof(this));
}
};
int main()
{
Car car;
//writing object...
car.save();
ofstream ofs;
ofs.open("filename1.txt", ios::out | ios::app);
ofs.write((char*)&car, sizeof(car));
}
此链接有一个显示结果的图像....
【问题讨论】:
-
其实我已经找到了问题所在。 sizeof(this) 语句有问题,它返回的是存储对象的指针的大小,但将其更改为 sizeof(Car) 将返回对象的大小...
-
“其实我已经找到问题所在了”你呢?更改 sizeof 的参数不会使任一版本正确。它将用不同的垃圾数据替换垃圾数据。 您不能将
write用于此对象。 -
在 C++ 中寻找序列化。你应该找到很多可以学习的资源。
标签: c++ oop object fstream ofstream