Namespaces
Variants

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

From cppreference.net
Iterator library
Iterator concepts
Iterator primitives
Algorithm concepts and utilities
Indirect callable concepts
Common algorithm requirements
(C++20)
(C++20)
(C++20)
Utilities
(C++20)
Iterator adaptors
Range access
(C++11) (C++14)
(C++14) (C++14)
(C++11) (C++14)
(C++14) (C++14)
(C++17) (C++20)
(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 > :: value true ,则该复制构造函数为平凡复制构造函数。 (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 首次读取可能延迟到首次解引用时执行 始终在构造函数中执行