使用 boost::iostreams 提取压缩文件
我正在寻找一种使用 boost::iostreams 类在 C++ 中提取文件的方法。
boost 文档中有一个示例。 但它将压缩文件的内容输出到std::cout。 我正在寻找一种将其提取到文件结构的方法。
有人知道该怎么做吗?
谢谢!
I'm searching for a way to extract a file in c++ by using the boost::iostreams classes.
There is an example in the boost documentation. But it outputs the content of the compressed file to std::cout.
I'm looking for a way to extract it to a file structure.
Does anybody know how to do that?
Thanks!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
Boost.IOStreams 不支持压缩档案,仅支持单个压缩文件。 如果要将 .zip 或 .tar 文件提取到目录树,则需要使用不同的库。
Boost.IOStreams does not support compressed archives, just single compressed files. If you want to extract a .zip or .tar file to a directory tree, you'll need to use a different library.
文档中的示例显示了如何解压缩文件并将结果推送到另一个流。
如果您希望将输出定向到内存数组,则可以使用
boost::iostreams::stream
类型的流。这基本上是一个围绕数组的流包装器。
当你说你想要“文件结构”中的输出时,我不确定你的意思是什么。
The example in the documentation shows how to decompress the file and push the result to another stream.
If you want the output to be directed to an in-memory array instead, you can use a stream of type
boost::iostreams::stream<boost::iostreams::array_source>
instead.That is basically a stream-wrapper around an array.
I'm not sure what you mean when you say you want the output in "a file structure" though.
在我看来,对 boost::iostreams::copy 的调用将 ostream 作为第二个参数。 您是否尝试过使用输出文件名创建一个 ofstream 并使用它?
Looks to me like the call to boost::iostreams::copy takes an ostream as the second parameter. Have you tried creating an ofstream with your output file name and using that?
您可能不想要那个库。 您可能想四处寻找其他一些。
例如 zziplib
You probably don't want that library. You might want to look around for some others.
E.g. zziplib