Reference
C Library
IOstream Library
Strings library
STL Containers
STL Algorithms
Miscellaneous
Miscellaneous
complex
exception
functional
iterator
limits
locale
memory
new
numeric
stdexcept
typeinfo
utility
valarray
iterator
advance
back_inserter
distance
front_inserter
inserter
iterator
iterator_traits
iterator categories:
BidirectionalIterator
ForwardIterator
InputIterator
OutputIterator
RandomAccessIterator
predefined iterators:
back_insert_iterator
front_insert_iterator
insert_iterator
istreambuf_iterator
istream_iterator
ostreambuf_iterator
ostream_iterator
reverse_iterator


ostream_iterator

class template
<iterator>
template <class T, class charT=char, class traits=char_traits<charT>, 
          class Distance = ptrdiff_t>
  class ostream_iterator;

Ostream iterator

Ostream iterators are a special output iterator class designed to write into successive elements of an output stream (ostream or another basic_ostream class).

They are constructed from a basic_ostream object, to which they become associated, so that whenever an assignment operator (=) is used on the ostream_iterator (even when dereferenced) it inserts a new element into the stream.

Optionally, a delimiter can be specified on construction. This delimiter is written to the stream after each element is inserted.

It is defined with an operation similar to:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
template <class T, class charT=char, class traits=char_traits<charT> >
  class ostream_iterator :
    public iterator<output_iterator_tag, void, void, void, void>
{
  basic_ostream<charT,traits>* out_stream;
  const charT* delim;
public:
  typedef charT char_type;
  typedef traits traits_type;
  typedef basic_ostream<charT,traits> ostream_type;
  ostream_iterator(ostream_type& s) : out_stream(&s), delim(0) {}
  ostream_iterator(ostream_type& s, const charT* delimiter)
    : out_stream(&s), delim(delimiter) { }
  ostream_iterator(const ostream_iterator<T,charT,traits>& x)
    : out_stream(x.out_stream), delim(x.delim) {}
  ~ostream_iterator() {}
  ostream_iterator<T,charT,traits>& operator= (const T& value) {
    *out_stream << value;
    if (delim!=0) *out_stream << delim;
    return *this;
  }
  ostream_iterator<T,charT,traits>& operator*() { return *this; }
  ostream_iterator<T,charT,traits>& operator++() { return *this; }
  ostream_iterator<T,charT,traits>& operator++(int) { return *this; }
};


Template parameters

T
Element type for the iterator: The type of elements inserted into the stream
charT
First template parameter for the basic_ostream: The type of elements the stream manages (char for ostream).
traits
Second template parameter for the basic_ostream: Character traits for the elements the stream manages.

Member functions

constructor
ostream_iterator objects are constructed from an ostream object, and optionally a delimiter.
A copy constructor also exists to copy objects of the same type.
operator=
Writes an element into the stream. If delimiter was specified on construction, it is also inserted after the value.
operator*
Does nothing. Returns a reference to the object.
operator++
Does nothing. Returns a reference to the object.

Example

1
2
3
4
5
6
7
8
9
10
11
12
13
14
// ostream_iterator example
#include <iostream>
#include <iterator>
#include <vector>
using namespace std;
int main () {
  vector<int> myvector;
  for (int i=1; i<10; ++i) myvector.push_back(i*10);
  ostream_iterator<int> out_it (cout,", ");
  copy ( myvector.begin(), myvector.end(), out_it );
  return 0;
}


Output:

10, 20, 30, 40, 50, 60, 70, 80, 90, 

See also