определение входного фильтра для поиска

При использовании boost мне нужен поисковый входной фильтр, который будет работать с байтами, считанными из ifstream. Вот что у меня сейчас есть:

struct my_filter : boost::iostreams::seekable_filter
{
template<typename Source>
int get(Source& src)
{
int byte = boost::iostreams::get(src);
if(byte != EOF && byte != boost::iostreams::WOULD_BLOCK)
{
// Do something with byte
}
return byte;
}

template<typename Sink>
bool put(Sink&, char)
{
// No need to actually implement put because this filter is only used with ifstream
return true;
}

template<typename T>
std::streampos seek(T& t, boost::iostreams::stream_offset off, std::ios_base::seekdir way, std::ios_base::openmode which = std::ios_base::in | std::ios_base::out)
{
return boost::iostreams::seek(t, off, way, which);
}
};

Это работает, но я хотел бы избавиться от бесполезного метода пут. Дополнительная документация здесь http://www.boost.org/doc/libs/1_60_0/libs/iostreams/doc/concepts/filter.html говорит, что есть фильтр InputSeekableFilter, но я не могу понять, как его использовать (нет структур input_seekable_filter_tag или input_seekable_filter, которые я мог бы использовать).

1

Решение

Ответ от llonesmiz на boost-users:

«boost :: iostreams :: seekable_filter», кажется, просто typedef для
«повышение :: iostreams :: фильтр<boost::iostreams::seekable> «. Я не знаю
конечно, но я думаю, что было бы разумно выводить вашу «структуру
my_filter «от
«повышение :: iostreams :: фильтр<boost::iostreams::input_seekable> «бы
выполнить то, что вы хотите.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]