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
関連項目
basic_istream_view
: ストリームからデータを読み込むRange