在 C++ 中使用 DeflateStream?

发布于 2024-12-23 18:32:45 字数 448 浏览 1 评论 0原文

我目前正在尝试将一些涉及使用 DeflateStream 的 C# 代码移植到标准 C++ 中,而无需 .NET 框架的支持。此类函数的一个示例是:

public static byte[] ReadCompressed(this Stream stream)
{
    var reader = new BinaryReader(stream);
    int len = reader.ReadInt32();
    var array = new byte[len];
    var ds = new DeflateStream(stream, CompressionMode.Decompress);
    ds.Read(array, 0, len);
    ds.Close();
    return array;
}

只是想知道,是否有一种简单的方法将上述代码移植到 C++ 中?谢谢!

I'm currently trying to port some C# codes involving usage of DeflateStream into standard C++ without the support of .NET framework. One example of such function is:

public static byte[] ReadCompressed(this Stream stream)
{
    var reader = new BinaryReader(stream);
    int len = reader.ReadInt32();
    var array = new byte[len];
    var ds = new DeflateStream(stream, CompressionMode.Decompress);
    ds.Read(array, 0, len);
    ds.Close();
    return array;
}

Just wondering, Is there an easy way to port the above code into C++? Thanks!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

短暂陪伴 2024-12-30 18:32:45

您可能想使用 zlib。在 C++ 中执行此操作的最简单方法是使用 它的Boost包装

我不完全确定您的示例的作用,但以下是如何读取 zlib 压缩文件并将其内容写入 stdout (改编自文档中的示例):

namespace io = boost::iostreams;

std::ifstream file("hello.z", std::ios_base::binary);
io::filtering_streambuf<io::input> in;
in.push(io::zlib_decompressor());
in.push(file);
io::copy(in, std::cout);

You might want to use zlib. The easiest way to do that in C++ is to use the Boost wrapper for it.

I'm not entirely sure what your example does, but here's how to read in a zlib-compressed file and write its contents to stdout (adapted from an example in the docs):

namespace io = boost::iostreams;

std::ifstream file("hello.z", std::ios_base::binary);
io::filtering_streambuf<io::input> in;
in.push(io::zlib_decompressor());
in.push(file);
io::copy(in, std::cout);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文