gpt4 book ai didi

c++ - 使用 boost::archive 和 boost::iostreams 来压缩数据

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:52:02 25 4
gpt4 key购买 nike

我想为一个可以选择性地压缩数据的类编写一个序列化函数。我想使用 boost::iostreams 中提供的压缩工具。有谁知道如何做到这一点?

struct X
{
X() {}

template<class Archive>
void serialize(Archive & ar, const unsigned int version)
{
ar & compression;
if(compression == 0)
{
ar & data;
}
else if(compression == 1)
{
// use boost::iostream compression
// facilities to serialize data
}
}

int compression;
std::vector<int> data;
};

最佳答案

我能看到的唯一方法是先压缩数据,然后使用 ar.load_binary 和 ar.save_binary。要压缩数据,您可以使用带有 std::ostringstream 作为接收器的 filtering_stream 和适当的压缩过滤器。

您有什么理由不想将压缩插入堆栈(即,在压缩流上构建您的存档)?

关于c++ - 使用 boost::archive 和 boost::iostreams 来压缩数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5656298/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com