asio :: streambuf是否支持定位(即多个输入流)?

时间:2019-08-29 19:25:30

标签: c++ boost-asio

在我的项目中,我使用的是cerealasio(非增强型)。谷物的序列化功能希望在流上运行(例如std::ostream)。

串行化不是问题,反序列化也不是问题-通常。这是我的反序列化功能的样子:

template <typename ...Types>
auto deserialize(asio::streambuf& buf, Types& ...data) -> std::enable_if_t<(sizeof...(Types) > 0)>
{
    std::istream is(&buf);
    cereal::BinaryInputArchive ar(is);
    ar(data...);
} 

这很好用,只是is导致缓冲区中的数据一旦被读取就被破坏。

是否可以在不释放其数据的情况下从buf进行读取(因此我可以再次反序列化整个缓冲区)? streambuf::pubseekposstd::istream::seekg都无法重置位置。

0 个答案:

没有答案
相关问题