【发布时间】:2015-04-29 00:04:21
【问题描述】:
在 C 中将二进制数据写入文件很简单:使用 fwrite,传递要写入的对象的地址和对象的大小。 Modern C++ 是否有更“正确”的东西,还是我应该坚持使用 FILE* 对象?据我所知,IOStream 库用于编写格式化数据而不是二进制数据,并且 write 成员要求 char* 让我在代码中乱扔垃圾。
【问题讨论】:
-
您使用
std::basic_ostream::write和std::basic_istream::read函数来写入或读取,例如结构或其他二进制/原始数据。是的,您必须进行类型转换才能使其正常工作。 -
@JoachimPileborg 这应该是一个答案。
-
这些转换是一个友好的提醒,您正在将数据重新解释为字节序列。如果您不喜欢垃圾,请将
read和write包装起来,以便包装器接受void*而不是char*,并在您使用时添加错误处理。 -
相关问题请参见this mine answer。
标签: c++11