2.1.1. Overview: Devices, stream_buffer and stream
Написание нового класса потокового или потокового буфера с использованием библиотеки Boost Iostreams легко: вы просто пишете класс, моделирующий концепциюУстройство, а затем используете этот класс в качестве аргумента шаблона для<stream>или.<stream_buffer>:<
Здесь<io::stream_buffer<my_device>>является производным классом<std::basic_streambuf>, а<io::stream<my_device>>является производным классом<std::basic_istream>,<std::basic_ostream>или<std::basic_iostream>в зависимости отрежимамоего устройства,, то есть, в зависимости от того, какая из основных операций i/o.<read>,<write>и<seek>он поддерживает.
Шаблон<io::stream>предоставляется в качестве удобства. Всегда можно избежать<io::stream>и просто использовать<io::stream_buffer>вместе с одним из стандартных шаблонов потоков библиотеки.Например,,<
В этом примере<ostream><out>использует<stream_buffer><buf>в качестве основного поглотителя данных, так что данные, записанные на<out>, отправляются в файлlog.txt. Такой же эффект может быть достигнут путем по умолчанию построения<out>и указания ему использовать буфер потока<buf>путем вызова<out.rdbuf(&buf)>.
Другой способ определения нового класса потока или буфера потока с использованием библиотеки Boost Iostreams состоит в том, чтобы вывести из<filtering_stream>или<filtering_streambuf>.
Следующие три элемента продемонстрируют, как писать Устройства для доступа к STL-совместимым контейнерам. Исходный код для примеров можно найти в заголовке<<libs/iostreams/example/container_device.hpp>>
Статья Tutorial раздела может быть полезна для разработчиков на c++ и boost.
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.