|
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
|