【发布时间】:2020-02-15 18:21:42
【问题描述】:
我有这个对象 ob,我正在使用指向该对象的指针将其写入文件。但它似乎不起作用。
class A
{
public:
int Arr[10];
A();
};
A::A()
{
for(int i=0;i<10;i++)
Arr[i] = 0;
}
A obj;
int main(int argc, char *argv[])
{
A *ptr = &obj, temp;
obj.Arr[0] = 1;
fstream fp("temp", ios::in|ios::binary|ios::out);
fp.write((char *)ptr, sizeof(*ptr));
fp.close();
fp.open("temp", ios::in|ios::binary|ios::out);
fp.read((char *)&temp, sizeof(temp));
for(int i=0;i<10;i++)
cout<<temp.Arr[i]<<" ";
fp.close();
return 0;
}
输出:
0 0 0 0 0 0 0 0 0 0
预期输出:
1 0 0 0 0 0 0 0 0 0
如何使用指针直接写入对象。还有有什么办法可以直接读取指针本身的内容吗?
【问题讨论】:
-
学习一些基本的调试技能永远不会太早。首先,检查文件的二进制内容。这至少会告诉您问题是从文件写入还是从文件读取。一旦你知道问题出在哪里,你就有了调查的起点。 P.S.:你的 C++ 书对
ios::trunc标志有什么看法?
标签: c++ class object pointers file-handling