我正在尝试使用 filtering_streams 将某些对象的序列化压缩到一个array_sink
或类似的设备中,然后我可以确定压缩输出的长度并将其复制到另一个流,比如一个文件。但是,使用ostream::tellp
on the filtering_ostream
Causes boost 会引发运行时异常。我真的无法弄清楚我做错了什么。
using namespace boost::iostreams;
char *buffer = new char[4096*255];
array_sink zipStream(buffer, 4096*255);
filtering_ostream tempOut;
tempOut.push(zlib_compressor());
tempOut.push(zipStream);
column->Serialize(tempOut); // Object::Serialize(ostream&)
tempOut.flush(); // ?
int zipSize = tempOut.tellp();
// Do stuff with zipStream...