The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Интерактивная система просмотра системных руководств (man-ов)

 ТемаНаборКатегория 
 
 [Cписок руководств | Печать]

istream_iterator (3)
  • >> istream_iterator (3) ( Solaris man: Библиотечные вызовы )
  • 
                           Standard C++ Library
                 Copyright 1998, Rogue Wave Software, Inc.
    
    
    NAME
         istream_iterator
    
          - A stream iterator  that  has  iterator  capabilities  for
         istreams. This iterator allows generic algorithms to be used
         directly on streams.
    
    
    
    SYNOPSIS
         #include <iterator>
         template   <class   T,   class   charT,   class   traits   =
         ios_traits<charT>,
                  class Distance = ptrdiff_t>
         class istream_iterator : public iterator<input_iterator_tag,
                                       T,Distance>;
    
    
    
    DESCRIPTION
         Stream iterators are the  standard  iterator  interface  for
         input and output streams.
    
         The class_istream_iterator  reads  elements  from  an  input
         stream using operator >>. A value of type T is retrieved and
         stored when the iterator is constructed and each time opera-
         tor++  is called. The iterator is equal to the end-of-stream
         iterator value if the end-of-file is reached.  You  can  use
         the constructor with no arguments to create an end-of-stream
         iterator. The only valid use of this iterator is to  compare
         to  other  iterators  when  checking for end of file. Do not
         attempt to dereference the end-of-stream iterator; it  plays
         the  same  role  as  the  past-the-end iterator of the end()
         function of containers.  Since  an  istream_iterator  is  an
         input  iterator,  you cannot assign to the value returned by
         dereferencing   the   iterator.   This   also   means   that
         istream_iterators  can  only  be  used for single pass algo-
         rithms.
    
         Since a new value is read every time the operator++ is  used
         on  an  istream_iterator,  that  operation  is not equality-
         preserving. This means that i == j does not mean that ++i ==
         ++j (although two end-of-stream iterators are always equal).
    
    
    
    INTERFACE
         template   <class   T,   class   charT,   class   traits   =
         ios_traits<charT>
                  class Distance = ptrdiff_t>
         class istream_iterator :
                  public iterator<input_iterator_tag,T, Distance>
          {
    
         public:
            typedef T value_type;
            typedef charT char_type;
            typedef traits traits_type;
            typedef basic_istream<charT,traits> istream_type;
    
            istream_iterator();
            istream_iterator (istream_type&);
            istream_iterator
                   (const stream_iterator<T,charT,traits,Distance>&);
             ~istream_itertor ();
    
            const T& operator*() const;
            const T* operator ->() const;
            istream_iterator <T,charT,traits,
                              Distance>& operator++();
            istream_iterator <T,charT,traits,Distance>
                              operator++ (int)
          };
    
         // Non-member Operators
    
         template <class T, class charT, class traits,class Distance>
         bool                                        operator==(const
         istream_iterator<T,charT,traits,Distance>&,
                  const istream_iterator<T,charT,traits,Distance>&);
    
         template <class T, class charT, class traits,class Distance>
         bool                                        operator!=(const
         istream_iterator<T,charT,traits,Distance>&,
                  const istream_iterator<T,charT,traits,Distance>&);
    
    
    
    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.
    
    
    
         istream_type;
    
    
            Type of stream this iterator is constructed on.
    
    
    
    CONSTRUCTORS
         istream_iterator();
    
    
            Constructs an end-of-stream iterator. This  iterator  can
            be  used  to  compare against an end-of-stream condition.
            Use it to provide end iterators to algorithms.
    
    
    
         istream_iterator(istream& s);
    
    
            Constructs an istream_iterator on the given stream.
    
    
    
         istream_iterator(const istream_iterator& x);
    
    
            Copy constructor.
    
    
    
    DESTRUCTORS
         ~istream_iterator();
    
    
    
    OPERATORS
         const T&
         operator*() const;
    
    
            Returns the current value stored by the iterator.
    
    
    
         const T*
         operator->() const;
    
    
            Returns a pointer to the  current  value  stored  by  the
            iterator.
    
    
    
         istream_iterator& operator++()
         istream_iterator operator++(int)
    
    
            Retrieves the next element from the input stream.
    
    
    
    NON-MEMBER OPERATORS
         bool
         operator==(const istream_iterator<T,charT,traits,
                    Distance>& x,
                    const
                    istream_iterator<T,charT,traits,Distance>& y)
    
    
            Returns true if x is the same as y.
    
    
    
         bool
         operator!=(const istream_iterator<T,charT,traits,
                    Distance>& x,
                    const
                    istream_iterator<T,charT,traits,Distance>& y)
    
    
            Returns true if x is not the same as y.
    
    
    
    EXAMPLE
         //
         // io_iter.cpp
         //
          #include <iterator>
          #include <vector>
          #include <numeric>
          #include <iostream>
         using namespace std;
    
         int main ()
          {
           vector<int> d;
           int total = 0;
            //
            // Collect values from cin until end of file
            // Note use of default constructor to get ending iterator
            //
           cout << "Enter a sequence of integers (eof to quit): " ;
           copy(istream_iterator<int,char>(cin),
                 istream_iterator<int,char>(),
                inserter(d,d.begin()));
            //
            // stream the whole vector and the sum to cout
            //
           copy(d.begin(),d.end()-1,
                ostream_iterator<int,char>(cout," + "));
           if (d.size())
             cout << *(d.end()-1) << " = " <<
                  accumulate(d.begin(),d.end(),total) << endl;
           return 0;
          }
    
    
    
    WARNINGS
         If your compiler does not support default  template  parame-
         ters,  then you always need to supply the Allocator template
         argument. You also have to include  all  parameters  to  the
         istream_iterator template. For instance, you have to write:
    
         vector<int, allocator<int> >
    
         instead of:
    
         vector<int>
    
         If your compiler does not support namespaces,  then  you  do
         not need the using declaration for std.
    
    
    SEE ALSO
         Iterators, ostream_iterator
    
    
    
    


    Поиск по тексту MAN-ов: 




    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру