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

标签 c++ file struct append

我有我的结构:

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/

相关文章:

c++ - 在 C++ 中以长度指示器方式从二进制文件中读取

iOS 保存图像并命名

java - java如果文件不存在则写入字符串

c - 指向结构体的指针数组

c++ - 返回意外结构值的函数

c++ - 在 C++ 接口(interface)中使用 Boost.Range

c++ - 使用 glOrtho() 时 gluLookAt() 不起作用?

c++ - 如果在匿名命名空间中声明的变量使用什么内存?

python - vtkOBJReader 在 qt 主循环内不起作用

在 C 中将未知长度缓冲区复制到固定大小缓冲区