0
나는 filtering_streams를 사용하여 어떤 객체의 직렬화를 array_sink
또는 유사 장치로 압축하려고합니다. 그런 다음 압축 된 출력의 길이를 결정하고 다른 스트림 (예 : 파일)에 복사 할 수 있습니다. 그러나 filtering_ostream
에 ostream::tellp
을 사용하면 부스트가 런타임 예외를 발생시킵니다. 나는 내가 뭘 잘못하고 있는지 알 수 없다.부스트 filtering_stream 및 tellp
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...
고마워요! 나는이 생각의 라인을 따라 작업하고 있었지만, 탐색 할 수없는 것이 tellp을 막을 수는 없다는 것을 알지 못했지만 - 스택을 통해 달리다 보니 실제로 시도하고있는 것을 보았습니다. 예외를 던지고있는 것을 보았습니다. 나는 스트림에'카운터 (counter) '필터를 넣어 원하는 것을 얻었습니다. – MischaNix