Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ ostream_iterator(3C++) — Sun WorkShop 5.0

Media Vault

Software Library

Restoration Projects

Artifacts Sought

ostream_iterator(3C++)

Standard C++ Library
Copyright 1998, Rogue Wave Software, Inc.

 

NAME

 
ostream_iterator
 
 - Stream iterators allow for use of iterators with ostreams and istreams. They allow generic algorithms to be used directly on streams.
 
 
 

SYNOPSIS

 
 
#include <ostream>
template <class T, class charT,

class traits = char_traits<charT> >

class ostream_iterator

: public iterator<output_iterator_tag,void,void>;
 
 
 

DESCRIPTION

 
 
Stream iterators use the standard iterator interface for input and output streams.
 
The class ostream_iterator writes elements to an output stream. If you use the constructor that has a second char ∗ argument, then that string is written after every element (the string must be null-terminated). Since an ostream iterator is an output iterator, it is not possible to get an element out of the iterator. You can only assign to it. 
 
 
 

INTERFACE

 
 

template <class T, class charT,

class traits = char_traits<charT> >

class ostream_iterator

: public iterator<output_iterator_tag,void,void>

{
public:
 

typedef T value_type;
typedef charT char_type;
typedef traits traits_type;
typedef basic_ostream<charT,traits> ostream_type;
 

 

ostream_iterator(ostream&);
ostream_iterator (ostream&, const char∗);
ostream_iterator (const

ostream_iterator<T,charT,char_traits<charT> >&);

~ostream_itertor ();

ostream_iterator<T,charT,char_traits<charT> >&

operator=(const T&);

ostream_iterator<T,charT,char_traits<charT> >&

operator∗ () const;

ostream_iterator<T,charT,char_traits<charT> >&

operator++ ();

ostream_iterator<T,charT,char_traits<charT> >

operator++ (int);

};
 
 
 

TYPES

 
 
 

value_type;

 
 
Type of value to stream in.
 

 
 
char_type;

 
 
Type of character the stream is built on.
 

 
 
traits_type;

 
 
Traits used to build the stream.
 

 
 
ostream_type;

 
 
Type of stream this iterator is constructed on.
 

 
 
 

CONSTRUCTORS

 
 
 
ostream_iterator (ostream& s);

 
 
Constructs an_ostream_iterator on the given stream.
 

 
 
ostream_iterator (ostream& s, const char∗ delimiter);

 
 
Constructs an_ostream_iterator on the given stream. The null terminated string delimiter is written to the stream after every element. 
 

 
 
ostream_iterator (const ostream_iterator<T>& x);

 
 
 Copy constructor.
 

 
 
 

DESTRUCTORS

 
 
 
~ostream_iterator ();

 
 
Destroys an object of class ostream_iterator. 
 

 
 
 

OPERATORS

 
 
 
const T& <br>operator= (const T& value);

 
 
 Shift the value T onto the output stream. 
 

 
 
const T& ostream_iterator<T>&
operator∗ ();
ostream_iterator<T>&
operator++();
ostream_iterator<T>
operator++ (int);

 
 
These operators do nothing. They simply allow the iterator to be used in common constructs.
 

 
 
 

EXAMPLE

 
 
 

#include <iterator>
#include <numeric>
#include <deque>
#include <iostream>

using namespace std;
 
int main ()

{

//
// Initialize a vector using an array.
//

int arr[4] = { 3,4,7,8 };
int total=0;
deque<int> d(arr+0, arr+4);

//
// stream the whole vector and a sum to cout
//

copy(d.begin(),d.end()-1,

ostream_iterator<int,char>(cout," + "));

cout << ∗(d.end()-1) << " = " <<

accumulate(d.begin(),d.end(),total) << endl;

return 0;

}
 
 
 

WARNINGS

 
 
If your compiler does not support default template parameters, then you always need to supply the Allocator template argument. For instance, you need to write:
 
deque<int, allocator<int> >
 
instead of:
 
deque<int>
 
If your compiler does not support namespaces, then you do not need the using declaration for std. 
 
 
 

SEE ALSO

 
 
istream_iterator, Iterators
 

Rogue Wave Software  —  Last change: 02 Apr 1998

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026