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 type | Definition |
---|---|
char_type | CharT |
traits_type | Traits |
istream_type | std::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 type | Definition |
---|---|
value_type | T |
difference_type | Distance |
pointer | const T* |
reference | const T& |
iterator_category | std::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_iterator | output iterator that writes to std::basic_ostream (class template) |
---|---|
istreambuf_iterator | input iterator that reads from std::basic_streambuf (class template) |
© cppreference.com
在CreativeCommonsAttribution下授权-ShareAlike未移植许可v3.0。