std::ostream_iterator
Определено в заголовке <iterator> | ||
|---|---|---|
template< class T,
class CharT = char,
class Traits = std::char_traits<CharT> >
class ostream_iterator
: public std::iterator<std::output_iterator_tag, void, void, void, void>
| (до C++17) | |
template< class T,
class CharT = char,
class Traits = std::char_traits<CharT> >
class ostream_iterator;
| (с C++17) |
std::ostream_iterator — это итератор единственного прохода LegacyOutputIterator, который записывает последовательные объекты типа T в объект std::basic_ostream, для которого он был сконструирован, используя operator<<. Необязательная строка-разделитель записывается в выходной поток после каждой операции записи. Операция записи выполняется при присваивании итератору (вне зависимости от того, разыменован он или нет). Инкрементирование std::ostream_iterator — это операция без действия.
В типичной реализации, единственными членами данных std::ostream_iterator являются указатель на связанный объект std::basic_ostream и указатель на первый символ в строке-разделителе.
При записи символов std::ostreambuf_iterator более эффективен, так как избегает накладных расходов на построение и уничтожение объекта стражи (sentry) один раз на каждый символ.
Типы членов
| Тип члена | Определение | ||||
|---|---|---|---|---|---|
iterator_category | std::output_iterator_tag | ||||
value_type | void | ||||
difference_type |
|
||||
pointer | void | ||||
reference | void | ||||
char_type | CharT |
||||
traits_type | Traits |
||||
ostream_type | std::basic_ostream<CharT, Traits> |
| Типы членов | (до C++17) |
Члены-функции
| создаёт новый ostream_iterator (публичная функция-член) |
|
уничтожает ostream_iterator (публичная функция-член) |
|
| записывает объект в связанную последовательность вывода (публичная функция-член) |
|
| операция без действия (публичная функция-член) |
|
| операция без действия (публичная функция-член) |
Пример
#include <iostream>
#include <iterator>
#include <numeric>
#include <sstream>
int main()
{
std::istringstream str("0.11 0.22 0.33 0.44");
std::partial_sum(std::istream_iterator<double>(str),
std::istream_iterator<double>(),
std::ostream_iterator<double>(std::cout, ", "));
std::cout << '\n';
}Вывод:
0.11, 0.33, 0.66, 1.1,
См. также
итератор вывода, который записывает в std::basic_streambuf (шаблон класса) |
|
итератор ввода, который считывает из std::basic_istream (шаблон класса) |
|
|
(функциональные основы библиотеки TS v2) | итератор вывода, который записывает последовательные элементы в выходной поток, разделяя соседние элементы разделителем (шаблон класса) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/iterator/ostream_iterator