最終更新日時:
が更新

履歴 編集

class template
<iterator>

std::istream_iterator

namespace std {
  template <class T, class CharT = char,
            class Traits = char_traits<CharT>, class Distance = ptrdiff_t>
  class istream_iterator
    : public iterator<input_iterator_tag, T, Distance, const T*, const T&>
}

概要

istream_iteratorは、operator++()でイテレータを進めることにより、入力ストリームのoperator>>()でストリームからデータを読み込む入力イテレータである。

ストリームからの読み取りがfail() == trueとなる場合に、イテレータはendイテレータと等しくなる。

メンバ関数

名前 説明 対応バージョン
(constructor) コンストラクタ
~istream_iterator() = default デストラクタ
operator=(const istream_iterator&) = default
operator=(istream_iterator&&) = default
代入演算子
operator* 間接参照
operator-> メンバアクセス
operator++ イテレータをインクリメントする

メンバ型

説明 対応バージョン
char_type CharT (デフォルトはchar)
traits_type Traits (デフォルトはchar_traits<CharT>)
istream_type 入力ストリーム型 basic_istream<CharT, Traits>
difference_type Distance (デフォルトはptrdiff_t)
pointer const T*
value_type T
iterator_category input_iterator_tag
reference const T&

非メンバ関数

名前 説明 対応バージョン
operator== 等値比較
operator!= 非等値比較

#include <iostream>
#include <iterator>
#include <sstream>
#include <algorithm>

int main()
{
  // 文字列の入力ストリームにデータを入れる
  std::stringstream ss;
  ss << 1 << std::endl
     << 2 << std::endl
     << 3;

  // 文字列の入力ストリームからデータを読み込むイテレータを作る
  std::istream_iterator<int> it(ss);
  std::istream_iterator<int> last;

  // イテレータを進めることにより、入力ストリームからデータを順に読み取る
  std::for_each(it, last, [](int x) {
    std::cout << x << std::endl;
  });
}

出力

1
2
3

参照