Я пытаюсь использовать компрессор boost zlib. Когда я запускаю следующий код, программа завершает работу с кодом -1, даже не печатая «1»:
#include <iostream>
#include <vector>
#include <boost/archive/binary_oarchive.hpp>
#include <boost/archive/binary_iarchive.hpp>
#include <boost/iostreams/filter/zlib.hpp>
#include <boost/iostreams/filtering_streambuf.hpp>
#include <sstream>
#include<zlib.h>
int main() {
std::cout << "1" << std::endl;
std::stringstream ss;
boost::iostreams::filtering_ostreambuf fos;
fos.push(boost::iostreams::zlib_compressor(boost::iostreams::zlib::best_compression));
fos.push(ss);
boost::archive::binary_oarchive archive(fos);
std::string s = "HELLO!";
archive << s;
archive << 58;
std::cout << ss.str() << std::endl;
return 0;
}
Когда я закомментирую строку, где я создаю zlib_compressor, программа работает, как и ожидалось, но не сжимая ничего. Почему этот код не работает?