我的理解是操作符>>返回左操作数,因此如果遇到错误或其他错误则cin >> x返回cin值.现在我的猜测是,因为跳过空白,所以不会存储字符.我想做的是这样的事情:falseEOFcin\n
int x;
while((cin >> x) and x != '\n')
// do stuff
Run Code Online (Sandbox Code Playgroud)
因此,当cin在流中遇到换行符时,它会退出输入循环(正如通常所说的那样EOF).
>>直接使用运算符将不起作用,因为正如你所说它跳过包括换行符的空格.
您可以做的是使用读取单行std::getline,然后您可以读取该行的所有输入std::stringstream.
std::string line;
if (std::getline(std::cin, line)) {
std::istringstream ss(line);
int x;
while (ss >> x) {
//....
}
}
Run Code Online (Sandbox Code Playgroud)