【发布时间】:2018-01-29 17:32:33
【问题描述】:
请告诉我,下一行是把结构变量的地址写入文件还是写入结构成员的值。
file_write.write((char*)&structure_data,sizeOfStructure);
其中 file_write 是 fstream 的对象,“structure_data”是一个具有 3 个整数数据类型成员的结构。谢谢。
【问题讨论】:
-
它接受
structure_data的任何内容,并将这些字节块复制到文件中。它不知道成员是什么。此外,这也是导致数千个 SO 问题像这样错误地进行编码的原因,其中structure_data不能以这种方式写入文件并使文件有意义。查找对象序列化。 -
不是写地址,而是写结构体中的数据。现在取决于可能不符合您期望的结构
-
write也采用char*,因此您在此处转换为char*,这会导致实现定义的行为。 -
请为我推荐一个有效的替代方案。@PaulMcKenzie
-
@Ehtesham 查看我给出的答案。最简单的方法是使用运算符
<<为每个项目将每个成员写入文件。
标签: c++