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

njp*_*njp 1 c++

我的理解是操作符>>返回左操作数,因此如果遇到错误或其他错误则cin >> x返回cin值.现在我的猜测是,因为跳过空白,所以不会存储字符.我想做的是这样的事情:falseEOFcin\n

int x;

while((cin >> x) and x != '\n')
    // do stuff
Run Code Online (Sandbox Code Playgroud)

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

int*_*jay 6

>>直接使用运算符将不起作用,因为正如你所说它跳过包括换行符的空格.

您可以做的是使用读取单行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)