1

我目前正在尝试在没有 .NET 框架支持的情况下将一些涉及使用 DeflateStream 的 C# 代码移植到标准 C++ 中。这种功能的一个例子是:

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++ 中?谢谢!

4

1 回答 1

4

您可能想使用zlib。在 C++ 中最简单的方法是使用Boost 包装器

我不完全确定您的示例做了什么,但这里是如何读取 zlib 压缩文件并将其内容写入标准输出(改编自文档中的示例):

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);
于 2012-01-03T21:51:26.697 回答