我有我的结构:
struct a
{
int x;
float f;
double d;
char c;
char s[50];
};
我希望每次都将我的计时器计划追加到一个二进制文件中。
// declaration
std::ofstream outFile;
// constructor:
outFile.open( "save.dat", ios::app );
// tick:
outFile << a << endl;
但在 save.dat 中只出现了这个:
0C3A0000..0C3A0000..0C3A0000..0C3A0000..0C3A0000..0C3A0000..0C3A0000..0C3A0000..0C3A0000..
提前致谢
最佳答案
您当前正在做的是编写结构定义的地址。
你想要做的是使用 ostream::write
outfile.write(reinterpret_cast<char*>(&myStruct), sizeof(a));
只要您的结构是 POD(普通旧数据)类型(您的示例就是),这就会起作用。 POD 类型表示所有成员都是固定大小。
另一方面,如果您有可变大小的成员,那么您需要一个一个地写出每个成员。
关于c++将结构 append 到二进制文件中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6829774/