3

ブースト ライブラリ (gzip) を使用してファイルを圧縮しようとしています。その簡単なタスク: ファイルdata.xmlがあり、それをdata.xml.gzに圧縮する必要があるとします。デフォルトの圧縮値を使用することもできますが、問題ありません。

Google および BOOST ページで検索しようとしましたが、成功しませんでした。

私は次のものを持っています:

bool SyncFrequencyHistory::frequencyHistoryCompressFile(void)
{
    printf("\r\n===== ACTION: frequencyHistoryCompressFile =====\r\n");

    std::ifstream inStream(FREQUENCY_HISTORY_FILE, std::ios_base::in);
    std::ofstream outStream(FREQUENCY_HISTORY_FILE_GZIP, std::ios_base::out);
    boost::iostreams::filtering_streambuf<boost::iostreams::output> out;
    out.push(boost::iostreams::gzip_compressor());
    out.push(outStream);
    boost::iostreams::copy(in, out);

    return true;
}

FREQUENCY_HISTORY_FILE には XML ファイルの完全な場所があります

FREQUENCY_HISTORY_FILE_GZIP には、XML.GZ ファイルの完全な場所があります。

ほとんどすべてのコードが間違っていることは知っていますが、誰が正しい方法でそれを書くべきかわかりません。

4

3 に答える 3

3

I already solved it! I changed to ZLIB library.

#include <zlib.h>

(...)

gzFile fi = gzopen(FILENAME,"wb");
gzprintf(fi,"This is a string"\r\n");
gzclose(fi);
于 2013-07-10T09:00:29.083 に答える
1

このコードは機能します。出力ストリームのバイナリ タイプを指定するだけです: std::ios_base::binary.

于 2016-11-01T10:08:31.260 に答える