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 ( ) ;
(hasta C++11)
constexpr istream_iterator ( ) ;
(desde C++11)
constexpr istream_iterator ( std:: default_sentinel_t ) ;
(2) (desde C++20)
istream_iterator ( istream_type & stream ) ;
(3)
(4)
istream_iterator ( const istream_iterator & other ) ;
(hasta C++11)
istream_iterator ( const istream_iterator & other ) = default ;
(desde C++11)
1,2) Construye el iterador de fin-de-flujo , inicializa el valor almacenado por valor. Este constructor es constexpr si el inicializador en la definición auto x = T ( ) ; es un inicializador constante (desde C++11) .
3) Inicializa el iterador, almacena la dirección de stream en un miembro de datos, y realiza la primera lectura del flujo de entrada para inicializar el miembro de datos del valor en caché.
4) Construye una copia de other . Si std:: is_trivially_copy_constructible < T > :: value es true , este constructor de copia es un constructor de copia trivial. (desde C++11)

Parámetros

stream - flujo para inicializar el istream_iterator con
other - otro istream_iterator del mismo tipo

Ejemplo

#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, " ")
    );
}

Salida:

1 2 3 4 5

Informes de defectos

Los siguientes informes de defectos que modifican el comportamiento se aplicaron retroactivamente a los estándares de C++ publicados anteriormente.

DR Aplicado a Comportamiento publicado Comportamiento correcto
LWG 1280 C++98 la sobrecarga (3) almacenaba el stream directamente almacena su dirección en su lugar
P0738R2 C++98 la primera lectura podría diferirse hasta el primer desreferenciamiento siempre se realiza en el constructor