Я понимаю, что оператор >>
возвращает левый операнд, так cin >> x
возвращается cin
который имеет значение false
если мы столкнемся с EOF
или другие ошибки. Теперь я думаю, что с cin
пропускает пробел, символы как \n
не храниться Я хотел бы сделать что-то вроде этого:
int x;
while((cin >> x) and x != '\n')
// do stuff
Так что когда cin
встречает новую строку в потоке, он выходит из цикла ввода (как это обычно делается, скажем, EOF
).
С помощью >>
Оператор напрямую не будет работать, потому что, как вы говорите, он пропускает пробелы, включая переводы строки.
Что вы можете сделать, это прочитать одну строку, используя std::getline
, а затем вы можете прочитать все входные данные из строки с std::stringstream
,
std::string line;
if (std::getline(std::cin, line)) {
std::istringstream ss(line);
int x;
while (ss >> x) {
//....
}
}
Других решений пока нет …