首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

std::istream_iterator

Defined in header <iterator>

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是一个单通道输入迭代器,它读取类型为连续的对象。Tstd::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更有效,因为它避免了每个字符构造和销毁哨兵对象一次的开销。

二次

代码语言:javascript
复制
#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, " "));
}

二次

产出:

二次

代码语言:javascript
复制
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)

代码语言:txt
复制
 © cppreference.com

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

扫码关注腾讯云开发者

领取腾讯云代金券