c ++将结构附加到二进制文件中

ghi*_*boz 1 c++ struct file append

我有我的结构:

struct a
{
  int    x;
  float  f;
  double d;
  char   c;
  char   s[50];
};
Run Code Online (Sandbox Code Playgroud)

我希望每次都将我的计时器时间表附加到二进制文件中.

// declaration
std::ofstream outFile;

// constructor:
outFile.open( "save.dat", ios::app );

// tick:
outFile << a << endl;
Run Code Online (Sandbox Code Playgroud)

但是在save.dat里面只出现这个:

0C3A0000..0C3A0000..0C3A0000..0C3A0000..0C3A0000..0C3A0000..0C3A0000..0C3A0000..0C3A0000..
Run Code Online (Sandbox Code Playgroud)

提前致谢

San*_*nen 6

您目前正在做的是编写结构定义的地址.
你想要做的是使用ostream :: write

outfile.write(reinterpret_cast<char*>(&myStruct), sizeof(a));
Run Code Online (Sandbox Code Playgroud)

只要您的结构是POD(普通旧数据)类型(您的示例是),这将起作用.POD类型表示所有成员都具有固定大小.

另一方面,如果你有可变大小的成员,那么你需要逐个写出每个成员.