Ввод через istream_iterator в C++
Чтение из потока по одному значению делает istream_iterator: он читает значения из
cin по одному.
Тип берут из iterator. Когда поток
больше не дает число нужного типа, итератор
совпадает с концом диапазона - так же,
как end у контейнера.
Для строки с числами подключите sstream.
Запишем чтение двух целых из потока с
данными "8 9" и выведем сумму:
std::istringstream input("8 9");
std::istream_iterator<int> it(input);
std::istream_iterator<int> end;
int sum = 0;
for (; it != end; ++it) {
sum += *it;
}
std::cout << sum << "\n";
Сумма 17. После второго числа
итератор становится концом: лишний текст
не попадает в цикл. С cin картина та
же, когда пользователь закончил ввод чисел.
Из потока с текстом "3 4 5"
считайте все целые до конца чисел и
выведите их произведение.