1

現在、DeflateStream の使用を含むいくつかの C# コードを、.NET フレームワークのサポートなしで標準 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圧縮ファイルを読み込んでその内容を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);
于 2012-01-03T21:51:26.697 に答える