【问题标题】:iostream comparision in boost and stlboost和stl中的iostream比较
【发布时间】:2015-04-14 02:33:20
【问题描述】:

正如我所说,

stlp_std::ostream  //stl lib call for io stream
boost::archive::text_oarchive //boost call for io serialization using archive

谁能澄清一下通过归档进行序列化的用途是什么? 两个调用都引用相同的功能吗?

【问题讨论】:

  • 你能再具体一点吗?序列化有什么不清楚的地方?
  • 请让我明白,归档与序列化有何关系?
  • 你认为text_oarchive来自哪个库..?
  • #include <boost/archive/text_oarchive.hpp> 我将其用作text_oarchive 的标题,我正确吗?
  • 这是它的头文件,是的,但 Boost.Serialization。 ;-]

标签: c++11 boost stl boost-asio


【解决方案1】:

区别其实有点FAQ。它在 Boost 库的文档中得到了很好的解决。以下引号中的所有粗体和大写都是原创的,不是我的:

"Archive concept"

<<>> 的存在表明档案和 C++ i/o 流之间存在关系。 档案不是 C++ i/o 流。该系统包含的所有档案都将流作为构造函数中的参数,并且该流用于输出或输入。但是,这不是序列化功能或存档接口的要求。事实证明,到目前为止编写的档案发现将其实现基于流很有用。

甚至还有一个关于那个in the "Rationale":

的部分

存档不是流

归档类不是派生自流,即使它们具有相似的语法规则。

  • 归档类不是流的种类,尽管它们是根据流实现的。 [5] 项目编号 41 解决了这一区别。
  • 我们不希望用户直接在流中插入/提取数据。这可能会创建损坏的存档。如果档案是从流中派生的,则可能会意外地做到这一点。所以归档类只定义安全和必要的操作。
  • 使用流来实现库中包含的归档类只是方便 - 不是必需的。图书馆用户可能希望定义自己的完全不使用流的存档格式。

【讨论】:

  • 档案不是 C++ i/o 流 - 现在我很清楚 非常非常感谢 @sehe。
【解决方案2】:

序列化是将数据结构可逆转换为线性字符序列。 C++ iostreams 不提供任何可逆性,boost 档案可以。

存档是您存储文档以供以后检索的地方。 Boost 档案存储序列化的数据结构以供以后反序列化。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多