如何在while(cin>> x)成语中包含'\ n'?

时间:2012-11-18 13:04:20

标签: c++

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

int x;

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

因此当cin遇到流中的换行符时,它会退出输入循环(正如通常所说的那样,EOF)。

1 个答案:

答案 0 :(得分:6)

直接使用>>运算符将无效,因为正如您所说,它会跳过包含换行符的空格。

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

std::string line;
if (std::getline(std::cin, line)) {
    std::istringstream ss(line);
    int x;
    while (ss >> x) {
        //....
    }
}