Skip to content

Latest commit

 

History

History
99 lines (77 loc) · 3.41 KB

istream_iterator.md

File metadata and controls

99 lines (77 loc) · 3.41 KB

istream_iterator

  • iterator[meta header]
  • std[meta namespace]
  • class template[meta id-type]
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&>
}
  • char_traits[link /reference/string/char_traits.md]
  • ptrdiff_t[link /reference/cstddef/ptrdiff_t.md]
  • iterator[link /reference/iterator/iterator.md]
  • input_iterator_tag[link /reference/iterator/iterator_tag.md]

概要

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;
  });
}
  • std::istream_iterator[color ff0000]
  • std::stringstream[link /reference/sstream/basic_stringstream.md]

出力

1
2
3

関連項目

参照