Чтобы прочитать неизвестное заранее количество разделённых пробелами целых чисел, можно использовать vector
и istream_iterator<int>
:
std::istream_iterator<int> numbers(std::cin), eof;
std::vector<int> a(numbers, eof);
Полный пример:
#include <algorithm> // copy
#include <iostream>
#include <iterator>
#include <vector>
int main()
{
std::istream_iterator<int> numbers(std::cin), eof;
std::vector<int> a(numbers, eof);
std::copy(a.begin(), a.end(), std::ostream_iterator<int>(std::cout, "\n"));
}
std::copy()
используется, чтобы напечатать каждое число из вектора на новой строке.
Пример использования:
$ g++ read-vector.cc -o read-vector && echo 1 2 3 4 5 6 7 8 | ./read-vector
Вывод:
1
2
3
4
5
6
7
8