私はfiltering_streamsを使用して、オブジェクトのシリアル化をarray_sink
または同様のデバイスに圧縮しようとしています。そこで、圧縮された出力の長さを決定し、それを別のストリーム、たとえばファイルにコピーできます。ただし、原因でを使用ostream::tellp
すると、filtering_ostream
ブーストが実行時例外をスローします。私は自分が間違っていることを本当に理解することはできません。
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...