Scroll to navigation

std::istream_iterator::istream_iterator(3) C++ Standard Libary std::istream_iterator::istream_iterator(3)

NAME

std::istream_iterator::istream_iterator - std::istream_iterator::istream_iterator

Synopsis


istream_iterator(); (until C++11)
constexpr istream_iterator(); (since C++11)
constexpr istream_iterator( (2) (since C++20)
std::default_sentinel_t );
istream_iterator( istream_type& stream ); (1) (3)
istream_iterator( const istream_iterator& other (until C++11)
); (4)
istream_iterator( const istream_iterator& other (since C++11)
) = default;


1,2) Constructs the end-of-stream iterator
, value-initializes the stored value. This constructor is constexpr if the
initializer in the definition auto x = T(); is a constant initializer
(since C++11).
3) Initializes the iterator, stores the address of stream in a data member, and
performs the first read from the input stream to initialize the cached value data
member.
4) Constructs a copy of other.
If std::is_trivially_copy_constructible<T>::value is true, this copy constructor is
a trivial copy constructor.
(since C++11)

Parameters


stream - stream to initialize the istream_iterator with
other - another istream_iterator of the same type

Example

// Run this code


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

Output:


1 2 3 4 5


Defect reports


The following behavior-changing defect reports were applied retroactively to
previously published C++ standards.


DR Applied to Behavior as published Correct behavior
LWG 1280 C++98 overload (3) stored stream directly stores its address instead
P0738R2 C++98 the first read might be deferred to always performed in the
the first dereference constructor

2024.06.10 http://cppreference.com