VMS Help
CXXLSTD, Iterators, ostream_iterator

 *Conan The Librarian

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

 NAME

   ostream_iterator  - Stream iterators	provide	 iterator capabilities
   for 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 provide 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 will	be  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);
      Construct an ostream_iterator on the given	stream.

   ostream_iterator (ostream& s,	const char* delimiter);
      Construct an ostream_iterator on the given	stream.	 The null
      terminated string delimitor is written to the stream after
      every element.

   ostream_iterator (const ostream_iterator<T>& x);
       Copy constructor.

 DESTRUCTOR

   ~ostream_iterator ();
       Destructor

 OPERATORS

   const	T&

   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 all do nothing.  They simply allow	 the iterator
      to be used in common constructs.

 EXAMPLE

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

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

 WARNING

   If your compiler does	not support default template parameters, then
   you need to always supply	the Allocator template argument.  For
   instance,	you will need to write :

   deque<int, allocator<int> >

   instead of :

   deque<int>

 SEE ALSO

   istream_iterator, iterators

 STANDARDS CONFORMANCE
   ANSI X3J16/ISO WG21 Joint C++	Committee
  Close     Help