std::experimental::ostream_joiner
<experimental/iterator>
class DelimT,
class CharT = char,
class Traits = std::char_traits <CharT>
>
std::experimental::ostream_joiner
is a single-pass LegacyOutputIterator that writes successive objects into the std::basic_ostream object for which it was constructed, using operator<<
, separated by a delimiter. The delimiter is written to the output stream between every two objects that are written. The write operation is performed when the iterator (whether dereferenced or not) is assigned to. Incrementing the ostream_joiner
is a no-op.
In a typical implementation, the only data members of ostream_joiner
are a pointer to the associated std::basic_ostream , the delimiter, and a bool member that indicates whether the next write is for the first element in the sequence.
Compared to std::ostream_iterator , ostream_joiner
prints the delimiter sequence one fewer time, and is not templated on the type of the object to be printed.
[edit] Member types
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
[edit] Member functions
[edit] Non-member functions
ostream_joiner
object, deducing the template's type arguments from the function arguments (function template) [edit]
[edit] Example
#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, ", ")); }
Output:
1, 2, 3, 4, 5