1

我的理解是运算符>>返回左操作数,因此cin >> x返回cin值是false如果我们遇到EOF错误或其他错误。现在我的猜测是,由于cin跳过了空格,\n因此不会存储诸如此类的字符。我想做的是这样的:

int x;

while((cin >> x) and x != '\n')
    // do stuff

因此,当cin在流中遇到换行符时,它会退出输入循环(就像它通常对 say, 所做的那样EOF)。

4

1 回答 1

6

直接使用>>运算符将​​不起作用,因为正如您所说,它会跳过包括换行符在内的空格。

您可以做的是使用 读取单行std::getline,然后您可以使用 读取该行的所有输入std::stringstream

std::string line;
if (std::getline(std::cin, line)) {
    std::istringstream ss(line);
    int x;
    while (ss >> x) {
        //....
    }
}
于 2012-11-18T13:15:42.583 回答