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



假设我有

struct S{
int m[10];
};

我可以通过简单地使用以下命令轻松地将其保存到文件中:

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

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

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

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

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

最新更新