std::istreambuf_iterator是单趟迭代器,从为之构造迭代器的std::basic_streambuf对象读取相继字符。 默认构造的std::istreambuf_iterator迭代器被称为流尾迭代器。合法的std::istreambuf_iterator抵达底层流结尾时,它变得等于流尾迭代器。解引用或进一步自增它导致未定义行为。
你可以像istream_iterator一样使用istreambuf_iterator。 istreambuf_iterator<char>对象进入流的缓冲区,并直接读取下一个字符。(更明确地说,一个istreambuf_iterator<char> 对象从一个istream s中读取会调用s.rdbuf()->sgetc()来读s的下一个字符。) 把我们的文件读取代码改为使用istreambuf_iterator相当简单:...
区分这两个iterator也很简单,只要记住带“buf”的更接近底层,所以原分不动地把所有字符都读了进来。
ostreambuf_iterator提供的字符的类型。复制 typedef CharType char_type; 备注类型作为模板参数的 CharType的同义词。示例复制 // istreambuf_iterator_char_type.cpp // compile with: /EHsc #include <iterator> #include <vector> #include <iostream> #include <algorithm> int main( ) { using name...
定义于头文件 <iterator> template< class CharT, class Traits = std::char_traits<CharT> > class istreambuf_iterator : public std::iterator< std::input_iterator_tag, CharT, typename Traits::off_type, /* unspecified, usually CharT* */, CharT > (C++17 前) template< class CharT, class ...