std::istream_iterator

来自cppreference.com
< cpp‎ | iterator

定义于头文件 <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&>
std::istream_iterator是单通输入迭代器,读取连续的T类型的对象从std::basic_istream对象,它被修建了,通过调用相应的operator>>的。实际的读操作时执行的迭代器是递增的,而不是当它被废弃。该迭代器时建造或完成的第一个间接引用,可以读出的第一个对象。否则,只提领返回最近读的对象的副本.
原文:
std::istream_iterator is a single-pass input iterator that reads successive objects of type T from the std::basic_istream object for which it was constructed, by calling the appropriate operator>>. The actual read operation is performed when the iterator is incremented, not when it is dereferenced. The first object may be read when the iterator is constructed or when the first dereferencing is done. Otherwise, dereferencing only returns a copy of the most recently read object.
文本通过谷歌翻译机器翻译。
你可以帮忙校正和验证翻译。点击此处查看指示。
被称为“流”迭代器的默认构造std::istream_iterator。当一个有效的std::istream_iterator达到基础流的结束,它变得等于最终的流迭代器。提领或递增的进一步调用未定义的行为.
原文:
The default-constructed std::istream_iterator is known as the end-of-stream iterator. When a valid std::istream_iterator reaches the end of the underlying stream, it becomes equal to the end-of-stream iterator. Dereferencing or incrementing it further invokes undefined behavior.
文本通过谷歌翻译机器翻译。
你可以帮忙校正和验证翻译。点击此处查看指示。
一个典型的实施std::istream_iterator持有两个数据成员:一个指针,指向相关的std::basic_istream对象,最近读的类型的值T.
原文:
A typical implementation of std::istream_iterator holds two data members: a pointer to the associated std::basic_istream object and the most recently read value of type T.
文本通过谷歌翻译机器翻译。
你可以帮忙校正和验证翻译。点击此处查看指示。
读取字符时,std::istreambuf_iterator是更有效的,因为它避免了一次,每个字符建设和破坏的哨兵对象的开销.
原文:
When reading characters, std::istreambuf_iterator is more efficient, since it avoids the overhead of constructing and destructing the sentry object once per character.
文本通过谷歌翻译机器翻译。
你可以帮忙校正和验证翻译。点击此处查看指示。

目录

[编辑] 会员类型

会员类型
原文:
Member type
文本通过谷歌翻译机器翻译。
你可以帮忙校正和验证翻译。点击此处查看指示。
Definition
char_type CharT
traits_type Traits
istream_type std::basic_istream<CharT, Traits>

[编辑] 成员函数

构造一个新的istream_iterator
原文:
constructs a new istream_iterator
文本通过谷歌翻译机器翻译。
你可以帮忙校正和验证翻译。点击此处查看指示。

(公开成员函数)
(析构函数)
(隐式声明)
destructs an istream_iterator, including the cached value
(公开成员函数)
获得的电流的副本element
accesses当前元素的成员
原文:
obtains a copy of the current element
accesses a member of the current element
文本通过谷歌翻译机器翻译。
你可以帮忙校正和验证翻译。点击此处查看指示。

(公开成员函数)
推进istream_iterator
原文:
advances the istream_iterator
文本通过谷歌翻译机器翻译。
你可以帮忙校正和验证翻译。点击此处查看指示。

(公开成员函数)

[编辑] 非成员函数

比较2 istream_iterators
原文:
compares two istream_iterators
文本通过谷歌翻译机器翻译。
你可以帮忙校正和验证翻译。点击此处查看指示。

(函数模板)

[编辑] 成员类型

成员类型 定义
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&> 继承而获得。

[编辑] 示例

#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

[编辑] 另请参阅

写入 std::basic_ostream 的输出迭代器
(类模板) [编辑]
std::basic_streambuf 读取的输入迭代器
(类模板) [编辑]