CodeNebula
C++98stlbeginner

std::istream_iterator

C++98 · The Foundation · Compiler flag: -std=c++98

Explanation

Reads elements from an input stream as an iterator.

Real-World Scenario

Read numbers from a file in a data parser.

Quick Snippet

snippet.cpp
std::istream_iterator<int> it(std::cin);

Full Example

istream_iterator.cpp
// CodeNebula - C++98 Example: istream_iterator
// Compile: g++ -std=c++98 -Wall -Wextra -o example istream_iterator.cpp

#include <iostream>
#include <sstream>
#include <vector>
#include <iterator>
#include <algorithm>

int main() {
    // Use a stringstream to simulate input
    std::istringstream input("10 20 30 40 50");

    // Read integers from stream using istream_iterator
    std::istream_iterator<int> begin(input);
    std::istream_iterator<int> end; // default = end-of-stream

    std::vector<int> nums(begin, end);

    std::cout << "Read from stream: ";
    for (std::vector<int>::iterator it = nums.begin(); it != nums.end(); ++it) {
        std::cout << *it << " ";
    }
    std::cout << std::endl;

    // Copy from another stream to a vector using back_inserter
    std::istringstream input2("100 200 300");
    std::vector<int> more;
    std::copy(std::istream_iterator<int>(input2),
              std::istream_iterator<int>(),
              std::back_inserter(more));

    std::cout << "Second read: ";
    for (std::vector<int>::iterator it = more.begin(); it != more.end(); ++it) {
        std::cout << *it << " ";
    }
    std::cout << std::endl;

    return 0;
}

// Expected output:
// Read from stream: 10 20 30 40 50
// Second read: 100 200 300
Run command
g++ -std=c++98 -Wall -Wextra -o example istream_iterator.cpp