正如我所说,
stlp_std::ostream //stl lib call for io stream
boost::archive::text_oarchive //boost call for io serialization using archive
有人可以通过归档来澄清序列化的用途吗? 这两个电话都是相同的功能吗?
答案 0 :(得分:1)
区别实际上是一些FAQ。它在Boost库的文档中得到了很好的解决。以下引号中的所有粗体和大写都是原始的,而不是我:
<<
和>>
的存在表明了档案与C ++ i / o流之间的关系。 档案不是C ++ i / o流。此系统包含的所有归档都将流作为构造函数中的参数,并且该流用于输出或输入。但是,这不是序列化功能或归档接口的要求。事实证明,到目前为止编写的档案已经发现将它们的实现建立在流上是有用的。
甚至还有关于 in the "Rationale":
的部分档案不是流
归档类是 NOT 派生自流,即使它们具有相似的语法规则。
- 归档类不是流类,尽管它们是按流实现的。这种区别在[5]项目编号41.
中得到解决- 我们不希望用户直接在流中插入/提取数据。这可能会导致存档损坏。如果归档来自流,可能会意外地执行此操作。因此,归档类只定义安全且必要的操作。
- 使用流来实现库中包含的归档类只是方便 - 不是必需的。图书馆用户可能希望定义他们自己的存档格式,根本不使用流。
答案 1 :(得分:0)
序列化是将数据结构可逆转换为线性字符序列。 C ++ iostreams不提供任何可逆性,增强档案。
存档是存储文档以供日后检索的地方。 Boost存档存储了序列化数据结构,以便以后反序列化。