使用boost序列化读取批量大小的二进制文件

时间:2018-01-20 07:35:25

标签: c++ boost binary binaryfiles serializer

我正在尝试使用boost的二进制序列化程序序列化该类,并使用批量大小加载二进制数据。

我能够获取10个中的前5个记录,并且当我尝试通过重新打开文件并将文件读取指针重新设置为前一个来读取另外5个记录时,该过程崩溃。我很确定,我在这里遗漏了一些东西来正确地重新设置文件读指针。

f = lambda x: np.intersect1d(x.iat[4], x.iat[6])
df_final_naFill['inter'] = df_final_naFill.apply(f, axis=1).values.tolist()

1 个答案:

答案 0 :(得分:0)

你错误地使用Boost序列化。

档案不是"随机访问"。他们使用标题和(可能)关闭顺序完成存储格式。

如果您创建包含10条记录的存档,则必须[必须]读取整个存档。当然,你可以在中途停止,因为,你知道,你还没有必要阅读其余部分。但是当然你不能期望以后阅读其余内容,好像一个全新的档案从那时开始,因为没有。结果是Undefined Behaviour

另请参阅关于将多个档案合并到一个文件中的内容(除非您使用自己的描述格式,否则不想这样做):