2015-07-20 1 views
1

повышающего :: iostream bzip2_decompressor не распаковка файла, сжатого bzip2_compressorповышение :: iostream bzip2_decompressor не распаковка файла, сжатый bzip2_compressor

+0

SSCCE ... Я думаю, вы забыли его – sehe

+0

http://www.boost.org/doc/libs/1_46_0/libs/iostreams/doc/classes/bzip2.html Это основывается на этой ссылке. – Hiesenberg

+0

Что вы думаете? Мы должны сделать это за вас? – sehe

ответ

1

Вот простой самодостаточным пример, показывающий, что для работы:

Live On Coliru

#include <iostream> 
#include <boost/iostreams/filtering_stream.hpp> 
#include <boost/iostreams/copy.hpp> 
#include <boost/iostreams/filter/bzip2.hpp> 
#include <sstream> 

namespace io = boost::iostreams; 

int main() 
{ 
    std::stringstream ss; 

    { 
     io::filtering_stream<io::output> of; 
     of.push(io::bzip2_compressor{}); 
     of.push(ss); 

     io::copy(std::cin, of); 
    } 

    std::cout << "Compressed input: " << ss.str().size() << " bytes\n"; 

    ss.seekg(0ul); 
    { 
     io::filtering_stream<io::input> if_; 
     if_.push(io::bzip2_decompressor{}); 
     if_.push(ss); 

     io::copy(if_, std::cout); 
    } 
} 

On Coliru показывает, что он сжимает себя до 331 байт и обратно stdout

Возможно, вы забыли очистить, иметь недвоичные пробелы. Мы не можем сказать без SSCCE

+0

Что такое 0ul? Я бы хотел написать во время записи: of.write() и при чтении if_.read()? так что я могу указать, сколько байтов читать на них. Я хотел бы написать в сжатом двоичном файле с именем abc.dat.bz2, а затем снова прочитать его abc.dat.bz2. и recFile_ является std :: ofstream recFile_ для прямой записи в файл. и базовый файл re_baseFile - это std :: ifstream. – Hiesenberg

+0

Добавлен SSCCE. любезно проверьте его. – Hiesenberg

Смежные вопросы