将包含数组数据成员的结构保存到文件

时间:2013-12-30 18:50:40

标签: c++ file-io struct dynamic-arrays

说我有

struct S{

int m[10];

};

我可以通过简单地使用:

轻松地将其保存到文件中
S s;

file.write(reinterpret_cast<char*>(&s), sizeof(S));

但是如果我在struct中有动态数组怎么办?有没有更简单的方法将带有数组的结构保存到文件中,而不必迭代结构中每个数组中的每个元素?

struct S2{
int *p;
int *t;
};

1 个答案:

答案 0 :(得分:2)

不,没有。并且不应该以您演示的方式写入文件。您应该始终单独序列化每个成员。

类和结构可能有填充。如果从一个版本的程序中写出结构并使用另一个版本的程序读取它,则结构大小和布局可能不对齐。如果您有跨平台应用程序,或者不同程序正在读取/写入此文件,则也是如此。单独序列化每个成员还可以在需要时为网络/跨平台目的交换字节序。