我的理解是,运算符>>
会返回左操作数,因此如果遇到cin >> x
,cin
会返回false
,其值为EOF
或其他错误。现在我的猜测是,由于cin
跳过空格,因此\n
之类的字符不会被存储。我想做的是这样的事情:
int x;
while((cin >> x) and x != '\n')
// do stuff
因此当cin
遇到流中的换行符时,它会退出输入循环(正如通常所说的那样,EOF
)。
答案 0 :(得分:6)
直接使用>>
运算符将无效,因为正如您所说,它会跳过包含换行符的空格。
您可以使用std::getline
读取一行,然后您可以使用std::stringstream
读取该行的所有输入。
std::string line;
if (std::getline(std::cin, line)) {
std::istringstream ss(line);
int x;
while (ss >> x) {
//....
}
}