我有我的结构:

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++ - C++将结构 append 到二进制文件中,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6829774/

10-12 01:17