在线文档教程
C++
迭代器 | Iterator

std::istream_iterator

STD::iStream[医]迭代器

Defined in header
template< class T, class CharT = char, class Traits = std::char_traits<CharT>, class Distance = std::ptrdiff_t > class istream_iterator: public std::iterator<std::input_iterator_tag, T, Distance, const T*, const T&>(until C++17)
template< class T, class CharT = char, class Traits = std::char_traits<CharT>, class Distance = std::ptrdiff_t > class istream_iterator;(since C++17)

std::istream_iterator是一个单通道输入迭代器,它读取类型为连续的对象。T从std::basic_istream对象,通过调用适当的operator>>实际读取操作是在迭代器增加时执行的,而不是在取消引用时执行的。当迭代器被构造或第一解引用完成时,可以读取第一对象。否则,取消引用只返回最近读取的对象的副本。

默认构造std::istream_iterator被称为流尾迭代器。当一个有效的std::istream_iterator到达底层流的末尾,它就等于流结束迭代器.。解除引用或增量将进一步调用未定义的行为。

的典型实现std::istream_iterator包含两个数据成员:指向关联std::basic_istream对象和最近读取的类型的值。T...

T必须满足DefaultConstructible,,,CopyConstructible,和CopyAssignable所需经费。

成员类型

Member typeDefinition
char_typeCharT
traits_typeTraits
istream_typestd::basic_istream<CharT, Traits>

成员函数

(constructor)constructs a new istream_iterator (public member function)
(destructor)destructs an istream_iterator, including the cached value (public member function)
operator*operator->returns the current element (public member function)
operator++operator++(int)advances the iterator (public member function)

非会员职能

operator==operator!=compares two istream_iterators (function template)

成员类型

Member typeDefinition
value_typeT
difference_typeDistance
pointerconst T*
referenceconst T&
iterator_categorystd::input_iterator_tag

注意:在C++17之前,这些成员类型必须通过从std::iterator<std::input_iterator_tag,T,Distance,const T*,const T&>...

注记

当阅读字符时,std::istream_iterator默认情况下跳过空格%28,除非禁用std::noskipws或相当于%29,同时std::istreambuf_iterator不会的。此外,std::istreambuf_iterator更有效,因为它避免了每个字符构造和销毁哨兵对象一次的开销。

二次

#include <iostream> #include <sstream> #include <iterator> #include <numeric> int main() { std::istringstream str("0.1 0.2 0.3 0.4" std::partial_sum(std::istream_iterator<double>(str), std::istream_iterator<double>(), std::ostream_iterator<double>(std::cout, " ") }

二次

产出:

二次

0.1 0.3 0.6 1

二次

另见

ostream_iteratoroutput iterator that writes to std::basic_ostream (class template)
istreambuf_iteratorinput iterator that reads from std::basic_streambuf (class template)

© cppreference.com

在CreativeCommonsAttribution下授权-ShareAlike未移植许可v3.0。

http://en.cppreference.com/w/cpp/iterator/iStream[医]迭代器