Namespaces
Variants

std::experimental:: ostream_joiner

From cppreference.net
Определено в заголовочном файле <experimental/iterator>
template <

class DelimT,
class CharT = char ,
class Traits = std:: char_traits < CharT >
>

class ostream_joiner ;
(TS основ библиотеки v2)

std::experimental::ostream_joiner является однопроходным LegacyOutputIterator , который записывает последовательные объекты в std::basic_ostream , для которого он был создан, используя operator<< , с разделителем между ними. Разделитель записывается в выходной поток между каждыми двумя записываемыми объектами. Операция записи выполняется при присваивании итератору (независимо от того, разыменован он или нет). Инкремент ostream_joiner является пустой операцией.

В типичной реализации единственными членами данных ostream_joiner являются указатель на ассоциированный std::basic_ostream , разделитель и bool член, который указывает, является ли следующая запись первым элементом в последовательности.

По сравнению с std::ostream_iterator , ostream_joiner выводит последовательность разделителей на один раз меньше и не является шаблонным по типу выводимого объекта.

Содержание

Типы членов

Тип члена Определение
char_type CharT
traits_type Traits
ostream_type std:: basic_ostream < CharT, Traits >
value_type void
difference_type void
pointer void
reference void
iterator_category std:: output_iterator_tag

Функции-члены

создает новый ostream_joiner
(public member function)
(destructor)
(implicitly declared)
уничтожает ostream_joiner
(public member function)
записывает объект в связанную выходную последовательность
(public member function)
пустая операция
(public member function)
пустая операция
(public member function)

Функции, не являющиеся членами класса

создаёт объект ostream_joiner , выводя аргументы шаблона из аргументов функции
(шаблон функции)

Пример

#include <algorithm>
#include <experimental/iterator>
#include <iostream>
#include <iterator>
int main()
{
    int i[] = {1, 2, 3, 4, 5};
    std::copy(std::begin(i),
              std::end(i),
              std::experimental::make_ostream_joiner(std::cout, ", "));
}

Вывод:

1, 2, 3, 4, 5

Смотрите также

выходной итератор, который записывает в std::basic_streambuf
(шаблон класса)
выходной итератор, который записывает в std::basic_ostream
(шаблон класса)
входной итератор, который читает из std::basic_istream
(шаблон класса)