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/cpp/iterator/ostream_iterator