Ошибка компиляции для boost::iostream::filtering_streambuf
Просто пытаюсь сжать строку с помощью bzip2, чтобы я мог отправить ее по каналу с помощью ReadFile.
Следующая строка приносит мне следующую ошибку компиляции.
in.push (uncompressed_string);
Ошибка 6 ошибка C2027: использование неопределенного типа 'boost::STATIC_ASSERTION_FAILURE' c:\program files (x86)\boost\boost_1_47\boost\iostreams\chain.hpp 488 1 агент
boost::iostreams::filtering_streambuf<boost::iostreams::input> in;
ostringstream uncompressed_string;
ostringstream compressed_string;
uncompressed_string << buf;
in.push(boost::iostreams::bzip2_compressor());
in.push(uncompressed_string);
boost::iostreams::copy(uncompressed_string, compressed_string);
1 ответ
Ошибка произошла из-за вставки выходного потока во входной поток фильтрации в качестве его устройства.
#include <sstream>
#include <string>
//#include <boost/iostreams/filtering_stream.hpp>
#include <boost/iostreams/filtering_streambuf.hpp>
#include <boost/iostreams/filter/bzip2.hpp>
#include <boost/iostreams/copy.hpp>
int main()
{
std::string buf = "this is a test\n";
//boost::iostreams::filtering_istream in; // I think this is simpler
boost::iostreams::filtering_streambuf<boost::iostreams::input> in;
in.push(boost::iostreams::bzip2_compressor());
std::istringstream uncompressed_string(buf);
// in.push(boost::make_iterator_range(buf)); // another option
in.push(uncompressed_string);
std::ostringstream compressed_string;
boost::iostreams::copy(in, compressed_string);
std::cout << compressed_string.str();
}
протестировано с gcc 4.6.1 и boost 1.46
~ $ ./test | bzcat
this is a test