Классы потоковых буферов. Итераторы потоковых буферов вывода

   
На этом шаге мы рассмотрим итераторы потоковых буферов вывода.

   
Вывод строки в потоковый буфер с использованием итератора ostreambuf_iterator выполняется так:

// Создание итератора для буфера или выходного потока 
cout std::ostreambuf_iterator<char> bufWriter(std::cout);
std::string hello("Hello, world\n"); 
std::copy(hello.begin(), hello.end(), bufWriter);

   
В первой строке этого фрагмента конструируется итератор вывода типа ostreambuf_iterator для объекта cout. Вместо передачи выходного потока данных
можно сразу передать указатель на потоковый буфер. Остальные команды конструируют объект string и копируют символы этого объекта через
сконструированный итератор вывода.

   
В таблице 1 перечислены все операции итераторов потоковых буферов вывода.

Таблица 1. Операции итераторов потоковых буферов вывода

ВыражениеОписание
ostreambuf_iterator<char>(ostream) Создание итератора потокового буфера вывода для потока ostream
ostreambuf_iterator<char>(buffer_ptr) Создание итератора потокового буфера вывода для буфера, на который ссылается указатель buffer_ptr
*iterФиктивная операция (возвращает iter)
iter = сЗаписывает символ с в буфер вызовом функции sputc(c)
++iterФиктивная операция (возвращает iter)
iter++Фиктивная операция (возвращает iter)
failed()Проверка возможности дальнейшей записи через итератор потокового буфера вывода

   
Этот интерфейс имеет много общего с потоковыми итераторами вывода
(смотри 230 шаг). Кроме того, итератор можно инициализировать буфером, а также проверить возможность записи через итератор функцией
failed(). Если предыдущий вывод символов завершился неудачей, failed() возвращает true. В этом случае любые попытки записи оператором =
ни к чему не приводят.

   
На следующем шаге мы рассмотрим итераторы потоковых буферов вывода.



Вы можете оставить комментарий, или Трекбэк с вашего сайта.

Оставить комментарий