- iterator[meta header]
- std[meta namespace]
- class template[meta id-type]
namespace std {
template <class CharT, class Traits = char_traits<CharT> >
class istreambuf_iterator
: public iterator<input_iterator_tag, CharT, typename Traits::off_type, unspecified, CharT>
}
- char_traits[link /reference/string/char_traits.md]
- iterator[link /reference/iterator/iterator.md]
- input_iterator_tag[link /reference/iterator/iterator_tag.md]
- unspecified[italic]
istreambuf_iterator
は、operator++()
でイテレータを進めることにより、ストリームバッファのsbumpc()
メンバ関数でストリームからデータを読み込む入力イテレータである。
ストリームからのsgetc()
メンバ関数による読み取りがTraits::eof()
を返した場合に、イテレータはend
イテレータと等しくなる。
istream_iterator
とは異なり、スペースや改行が読み飛ばされることはない。いくつかのメンバ関数は、同じstreambuf
オブジェクトを参照するためにプロキシオブジェクトを返す。
名前 | 説明 | 対応バージョン |
---|---|---|
(constructor) |
コンストラクタ | |
~istreambuf_iterator() = default |
デストラクタ | |
operator* |
間接参照 | |
operator-> |
メンバアクセス | C++11 |
operator++ |
イテレータをインクリメントする | |
equal |
istreambuf_iterator オブジェクトの等値比較 |
名前 | 説明 | 対応バージョン |
---|---|---|
char_type |
CharT |
|
traits_type |
Traits (デフォルトはchar_traits<CharT> ) |
|
int_type |
Traits::int_type |
|
streambuf_type |
basic_streambuf<CharT, Traits> |
|
istream_type |
basic_istream<CharT, Traits> |
|
difference_type |
Traits::off_type |
|
pointer |
未規定 | |
value_type |
CharT |
|
iterator_category |
input_iterator_tag |
|
reference |
CharT |
名前 | 説明 | 対応バージョン |
---|---|---|
operator== |
等値比較 | |
operator!= |
非等値比較 |
#include <iostream>
#include <iterator>
#include <sstream>
#include <algorithm> // for_each
int main()
{
std::stringstream ss;
ss << "1 2 3" << std::endl
<< "4 5 6";
// 文字列の入力ストリームから順に文字を読み込むイテレータを用意
std::istreambuf_iterator<char> it(ss);
std::istreambuf_iterator<char> last;
// イテレータを進めることにより、入力ストリームからデータを順に読み取る
std::for_each(it, last, [](char c) { std::cout << c; });
}
- std::istreambuf_iterator[color ff0000]
- std::stringstream[link /reference/sstream/basic_stringstream.md]
1 2 3
4 5 6