VMS Help
CXXLSTD, Iterators, istreambuf_iterator

 *Conan The Librarian

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

 NAME

   istreambuf_iterator

 SYNOPSIS

   #include <streambuf>
   template<class charT,	class traits = char_traits<charT> >
   class	istreambuf_iterator
   : public input_iterator

 DESCRIPTION

   The template class istreambuf_iterator reads successive characters
   from the stream buffer	for which it was constructed.
   operator*	provides access	to the current input character, if
   any, and operator++ advances to the next input	character. If
   the end of stream	is reached, the	iterator becomes equal	to the
   end of stream iterator value, which is constructed by the default
   constructor, istreambuf_iterator(). An istreambuf_iterator object
   can be used only for one-pass-algorithms.

 INTERFACE

   template<class charT,	class traits = char_traits<charT> >
   class	istreambuf_iterator
   : public input_iterator {

   public:

    typedef charT			  char_type;
    typedef typename traits::int_type	  int_type;
    typedef traits			  traits_type;
    typedef basic_streambuf<charT, traits> streambuf_type;
    typedef basic_istream<charT,	traits>	  istream_type;

    class proxy;

    istreambuf_iterator() throw();
    istreambuf_iterator(istream_type& s)	 throw();
    istreambuf_iterator(streambuf_type *s) throw();
    istreambuf_iterator(const proxy& p) throw();

    char_type operator*();
    istreambuf_iterator<charT, traits>& operator++();
    proxy operator++(int);
    bool	equal(istreambuf_iterator<charT, traits>& b);

   };

   template<class charT,	class traits>
   bool operator==(istreambuf_iterator<charT, traits>& a,
 		 istreambuf_iterator<charT, traits>& b);

 TYPES

   char_type
      The type char_type	is a synonym for the template parameter	charT.

   int_type
      The type int_type is a synonym of type traits::in_type.

   istream_type
      The type istream_type is an instantiation of class	basic_istream on
      types charT and traits:

        typedef basic_istream<charT, traits>   istream_type;

   streambuf_type
      The type streambuf_type is	an instantiation of class basic_streambuf
      on types charT and traits:

        typedef basic_streambuf<charT, traits> streambuf_type;

   traits_type
      The type traits_type is a synonym for the template	parameter traits.

 NESTED CLASS PROXY

   Class	istreambuf_iterator<charT,traits>::proxy provides a temporary
   placeholder as the	return value of	the post-increment operator.
   It	keeps the character pointed to by the previous value of	the
   iterator for some possible future access.

 CONSTRUCTORS

   istreambuf_iterator()
    throw();
       Constructs the end of stream iterator.

   istreambuf_iterator(istream_type& s)
    throw();
       Constructs an istreambuf_iterator	that inputs characters using
      the basic_streambuf object pointed to	by s.rdbuf(). If
      s.rdbuf()  is a	null pointer, the istreambuf_iterator is the
      end-of-stream  iterator.

   istreambuf_iterator(streambuf_type *s)
    throw();
       Constructs an istreambuf_iterator	that inputs characters using
      the basic_streambuf object pointed at	by s. If s is a	null
      pointer, the istreambuf_iterator is the end-of-stream iterator.

   istreambuf_iterator(const proxy& p)
    throw();
      Constructs an istreambuf_iterator	that uses the basic_streambuf
      object embedded in the proxy object.

 MEMBER OPERATORS

   char_type
   operator*();
      Returns the character pointed at by the input sequence of the
      attached stream buffer. If no character is available, the
      iterator  becomes equal to	the end-of-stream iterator.

   istreambuf_iterator<charT, traits>&
   operator++();
      Increments	the input sequence of the attached stream buffer to
      point to the next character. If the	current	character is
      the  last one, the iterator becomes equal to the end-of-stream
      iterator.

   proxy
   operator++(int);
      Increments	the input sequence of the attached stream buffer to
      point to the next character. If the	current	character is
      the  last one, the iterator becomes equal to the end-of-stream
      iterator.  The proxy	object returned contains the character
      pointed at before  carrying	out the post-increment
      operator.

 PUBLIC MEMBER FUNCTION

   bool
   equal(istreambuf_iterator<charT, traits>& b);
      Returns true if and only if both iterators	are at end of stream,
      or neither is at	end of stream, regardless of what stream
      buffer	object they are using.

 NON MEMBER FUNCTIONS

   template<class charT,	class traits>
   bool
   operator==(istreambuf_iterator<charT,	traits>& a,
 		 istreambuf_iterator<charT, traits>& b);
 		    Returns a.equal(b).

 EXAMPLES

   //
   // stdlib/examples/manual/istreambuf_iterator.cpp
   //
   #include<iostream>
   #include<fstream>

   void main ( )
   {
    using namespace std;

     // open the	file is_iter.out for reading and writing
    ofstream out("is_iter.out", ios_base::out | ios_base::in );

     // output the example sentence into	the file
    out << "Ceci	est un simple example pour demontrer le" << endl;
    out << "fonctionement de istreambuf_iterator";

     // seek to the beginning of	the file
    out.seekp(0);

     // construct an istreambuf_iterator	pointing to
     // the ofstream object underlying stream buffer
    istreambuf_iterator<char> iter(out.rdbuf());

     // construct an end	of stream iterator
    istreambuf_iterator<char> end_of_stream_iterator;

    cout	<< endl;

     // output the content of the file
    while( !iter.equal(end_of_stream_iterator) )

     // use both	operator++ and operator*
    cout	<< *iter++;

    cout	<< endl;

   }

 SEE ALSO

   basic_streambuf, basic_istream,
   ostreambuf_iterator

   Working Paper	for Draft Proposed International Standard for
   Information Systems--Programming Language	C++, Section 24.4.3

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