Здесь важно сказать, я думаю, что оператор >>
по умолчанию извлекает из потока (stdin в вашем случае) все символы до следующего пробела.Поэтому, если в стандартном вводе вы пишете 1 2
, вам нужно два вызова оператора >>
, чтобы прочитать и 1, и 2. Однако они не должны быть в одной строке кода.
Если вам нужно проверить один номер за один раз, вы можете просто снова вызвать вашу функцию.Возьмите этот пример:
#include <iostream>
#include <string>
#include <sstream>
using namespace std;
int main() {
int x;
string str;
getline(std::cin, str);
stringstream ss(str);
while (! ss.eof()) {
ss >> x;
cout << "Num: " << x << endl;
}
return 0;
}
Этот код читает одну строку ввода с помощью getline
и сохраняет ее в строке str
.Затем он создает stringtream с копией этой строки и в цикле while
извлекает одно число сразу (останавливает извлечение символов в каждом пробеле) до тех пор, пока поток не станет пустым.Следовательно, цикл выполняется один раз для каждого числа на входе.
Если вы введете на входе:
1 2 3 4
Вы получите:
Num: 1
Num: 2
Num: 3
Num: 4
Таким образом, вы можете вставить свою функциюв похожем коде и вызвать его внутри цикла.