std::istream_iterator<T,CharT,Traits,Distance>::istream_iterator

来自cppreference.com
 
 
迭代器库
迭代器概念
迭代器原语
算法概念与工具
间接可调用概念
常用算法要求
工具
迭代器适配器
流迭代器
迭代器定制点
迭代器操作
(C++11)
(C++11)
范围访问
(C++11)(C++14)
(C++11)(C++14)
(C++17)(C++20)
(C++14)(C++14)
(C++14)(C++14)
(C++17)
(C++17)
 
 
(1)
istream_iterator();
(C++11 前)
constexpr istream_iterator();
(C++11 起)
constexpr istream_iterator( std::default_sentinel_t );
(2) (C++20 起)
istream_iterator( istream_type& stream );
(3)
(4)
istream_iterator( const istream_iterator& other );
(C++11 前)
istream_iterator( const istream_iterator& other ) = default;
(C++11 起)
1,2) 构造流尾迭代器,值初始化存储的值。如果在定义 auto x = T(); 中的初始化器是常量初始化器,那么此构造函数是 constexpr 的 (C++11 起)
3) 初始化迭代器并在数据成员中存储 stream 的地址。再从输入流进行首次读取以初始化缓冲数据成员。
4) 构造 other 的副本。如果 std::is_trivially_copy_constructible<T>::valuetrue ,那么此构造函数是平凡复制构造函数。 (C++11 起)

参数

stream - 用于初始化 istream_iterator 的流
other - 同类型的另一 istream_iterator

示例

#include <algorithm>
#include <iostream>
#include <iterator>
#include <sstream>
 
int main()
{
    std::istringstream stream("1 2 3 4 5");
    std::copy(
        std::istream_iterator<int>(stream),
        std::istream_iterator<int>(),
        std::ostream_iterator<int>(std::cout, " ")
    );
}

输出:

1 2 3 4 5

缺陷报告

下列更改行为的缺陷报告追溯地应用于以前出版的 C++ 标准。

缺陷报告 应用于 出版时的行为 正确行为
LWG 1280 C++98 重载 (3) 会直接存储 stream 改为存储它的地址
P0738R2 C++98 首次读取可以延迟到首次解引用 一定会在构造函数中进行