共用方式為


istream_iterator 類別

描述輸入迭代器物件。 它會從輸入資料流擷取 類別Type的物件,該資料流會透過其儲存的物件存取,類型pointerbasic_istream<CharType、 。 Traits>

語法

template <class Type, class CharType = char, class Traits = char_traits<CharType>, class Distance = ptrdiff_t>
class istream_iterator
: public iterator<
    input_iterator_tag, Type, Distance,
    const Type *,
    const Type&>;

參數

類型
要輸入資料流擷取的物件類型。

CharType
類型,表示 istream_iterator 的字元類型。 這個引數是選擇性的,而且預設值是 char

特性
類型,表示 istream_iterator 的字元類型。 這個引數是選擇性的,而且預設值是 char_traits<CharType>。

距離
帶正負號的整數類資料類型,表示 istream_iterator 的差異類型。 這個引數是選擇性的,而且預設值是 ptrdiff_t

在建構或遞增具有非 null 儲存指標的 istream_iterator 類別物件之後,物件會嘗試從關聯的輸入資料流擷取和儲存 Type 類型物件。 如果擷取失敗,物件是實際上會將儲存的指標取代為 null 指標,因而建立序列結尾指標。

建構函式

建構函式 描述
istream_iterator 建構資料流結尾迭代器做為預設 istream_iterator,或建構 istream_iterator,初始化為從中讀取的迭代器資料流類型。

Typedefs

類型名稱 描述
char_type 類型,提供 istream_iterator 的字元類型。
istream_type 類型,提供 istream_iterator 的資料流類型。
traits_type 類型,提供 istream_iterator 的字元特性類型。

操作員

運算子 描述
operator* 取值運算子傳回 Type 類型 (由 istream_iterator 定址) 的儲存物件。
operator-> 傳回成員的值 (如果有)。
operator++ 從輸入資料流擷取遞增物件,或在遞增之前複製物件並傳回複本。

需求

Header:<iterator>

命名空間:std

istream_iterator::char_type

類型,提供 istream_iterator 的字元類型。

typedef CharType char_type;

備註

此類型是範本參數 Chartype的同義字。

範例

// istream_iterator_char_type.cpp
// compile with: /EHsc
#include <iterator>
#include <vector>
#include <iostream>

int main( )
{
   using namespace std;

   typedef istream_iterator<int>::char_type CHT1;
   typedef istream_iterator<int>::traits_type CHTR1;

   // Standard iterator interface for reading
   // elements from the input stream:
   cout << "Enter integers separated by spaces & then\n"
        << " any character ( try example: '2 4 f' ): ";

   // istream_iterator for reading int stream
   istream_iterator<int, CHT1, CHTR1> intRead ( cin );

   // End-of-stream iterator
   istream_iterator<int, CHT1, CHTR1> EOFintRead;

   while ( intRead != EOFintRead )
   {
      cout << "Reading:  " << *intRead << endl;
      ++intRead;
   }
   cout << endl;
}

istream_iterator::istream_iterator

建構資料流結尾迭代器做為預設 istream_iterator,或建構 istream_iterator,初始化為從中讀取的迭代器資料流類型。

istream_iterator();

istream_iterator(istream_type& _Istr);

參數

_Istr
要讀取的輸入資料流,用來將 istream_iterator 初始化。

備註

第一個建構函式會使用 Null 指標將輸入資料流指標初始化,並建立資料流結尾迭代器。 第二個建構函式會使用 &_Istr 初始化輸入數據流指標,然後嘗試擷取並儲存 類型 Type的物件。

數據流結尾反覆運算器可用來測試 是否已 istream_iterator 到達數據流結尾。

範例

// istream_iterator_istream_iterator.cpp
// compile with: /EHsc
#include <iterator>
#include <vector>
#include <algorithm>
#include <iostream>

int main( )
{
   using namespace std;

   // Used in conjunction with copy algorithm
   // to put elements into a vector read from cin
   vector<int> vec ( 4 );
   vector <int>::iterator Iter;

   cout << "Enter 4 integers separated by spaces & then\n"
        << " a character ( try example: '2 4 6 8 a' ): ";
   istream_iterator<int> intvecRead ( cin );

   // Default constructor will test equal to end of stream
   // for delimiting source range of vecor
   copy ( intvecRead , istream_iterator<int>( ) , vec.begin ( ) );
   cin.clear ( );

   cout << "vec = ";
   for ( Iter = vec.begin( ) ; Iter != vec.end( ) ; Iter++ )
      cout << *Iter << " "; cout << endl;
}

istream_iterator::istream_type

類型,提供 istream_iterator 的資料流類型。

typedef basic_istream<CharType, Traits> istream_type;

備註

此類型與 CharType、Traits> 同義basic_istream<

範例

如需如何宣告及使用 istream_type 的範例,請參閱 istream_iterator

istream_iterator::operator*

取值運算子傳回 Type 類型 (由 istream_iterator 定址) 的儲存物件。

const Type& operator*() const;

傳回值

類型的 Type預存物件。

範例

// istream_iterator_operator.cpp
// compile with: /EHsc
#include <iterator>
#include <vector>
#include <algorithm>
#include <iostream>

int main( )
{
   using namespace std;

   cout << "Enter integers separated by spaces & then\n"
        << " a character ( try example: '2 4 6 8 a' ): ";

   // istream_iterator from stream cin
   istream_iterator<int> intRead ( cin );

   // End-of-stream iterator
   istream_iterator<int> EOFintRead;

   while ( intRead != EOFintRead )
   {
      cout << "Reading:  " << *intRead << endl;
      ++intRead;
   }
   cout << endl;
}

istream_iterator::operator->

傳回成員的值 (如果有)。

const Type* operator->() const;

傳回值

成員的值 (如果有)。

備註

i->m 相當於 (*i).m

第一個運算子會傳回 &*this

範例

// istream_iterator_operator_vm.cpp
// compile with: /EHsc
#include <iterator>
#include <iostream>
#include <complex>

using namespace std;

int main( )
{
   cout << "Enter complex numbers separated by spaces & then\n"
        << " a character pair ( try example: '(1,2) (3,4) (a,b)' ): ";

   // istream_iterator from stream cin
   istream_iterator< complex<double> > intRead ( cin );

   // End-of-stream iterator
   istream_iterator<complex<double> > EOFintRead;

   while ( intRead != EOFintRead )
   {
      cout << "Reading the real part: " << intRead ->real( ) << endl;
      cout << "Reading the imaginary part: " << intRead ->imag( ) << endl;
      ++intRead;
   }
   cout << endl;
}

istream_iterator::operator++

從輸入資料流擷取遞增物件,或在遞增之前複製物件並傳回複本。

istream_iterator<Type, CharType, Traits, Distance>& operator++();

istream_iterator<Type, CharType, Traits, Distance> operator++(int);

傳回值

第一個成員運算符會傳回從輸入數據流擷取之型 Type 別遞增對象的參考,而第二個成員函式會傳回 對象的複本。

範例

// istream_iterator_operator_incr.cpp
// compile with: /EHsc
#include <iterator>
#include <vector>
#include <algorithm>
#include <iostream>

int main( )
{
   using namespace std;

   cout << "Enter integers separated by spaces & then\n"
        << " a character ( try example: '2 4 6 8 a' ): ";

   // istream_iterator from stream cin
   istream_iterator<int> intRead ( cin );

   // End-of-stream iterator
   istream_iterator<int> EOFintRead;

   while ( intRead != EOFintRead )
   {
      cout << "Reading:  " << *intRead << endl;
      ++intRead;
   }
   cout << endl;
}

istream_iterator::traits_type

類型,提供 istream_iterator 的字元特性類型。

typedef Traits traits_type;

備註

此類型與範本參數 Traits 同義。

範例

// istream_iterator_traits_type.cpp
// compile with: /EHsc
#include <iterator>
#include <iostream>

int main( )
{
   using namespace std;

   typedef istream_iterator<int>::char_type CHT1;
   typedef istream_iterator<int>::traits_type CHTR1;

   // Standard iterator interface for reading
   // elements from the input stream:
   cout << "Enter integers separated by spaces & then\n"
        << " any character ( try example: '10 20 a' ): ";

   // istream_iterator for reading int stream
   istream_iterator<int, CHT1, CHTR1> intRead ( cin );

   // End-of-stream iterator
   istream_iterator<int, CHT1, CHTR1> EOFintRead;

   while ( intRead != EOFintRead )
   {
      cout << "Reading:  " << *intRead << endl;
      ++intRead;
   }
   cout << endl;
}

另請參閱

input_iterator_tag 結構
iterator 結構
<iterator>
C++ 標準程式庫中的執行緒安全
C++ 標準程式庫參考