У меня есть этот поток, который выполняет декомпрессию с помощью Boost.Iostreams:Каков тип базового потока boost :: iostreams :: filtering_stream?
struct istream_zlib
: public boost::iostreams::filtering_stream<boost::iostreams::input, char>
{
istream_zlib(std::istream& in)
{
push(boost::iostreams::zlib_decompressor());
push(in);
}
};
Теперь я хотел бы получить доступ к основному потоку (std::istream& in
) позже. Наивно, я думал, что с просьбой о std::istream
через component()
бы это сделать, но указатель вернусь есть null
:
auto ptr = component<std::istream>(1); // ptr is null!
Какой я должен предоставить component()
для делать это?
Я хочу, чтобы получить доступ, где находится курсор через 'tellg()' для вычисления прогресса декомпрессии ... Я буду хранить ссылку на 'std :: istream', но это должно было избежать использования другого члена, если он уже хранится где-то еще, если это возможно. Спасибо, – piwi
@piwi см. Обновленный. – ForEveR
При использовании 'tellg()' в потоке не сообщается обновленная позиция курсора (слишком плохо), ваше решение позволяет получить доступ к базовому потоку! Благодарю. – piwi