c ++停止在ctrl-d上询问输入

时间:2017-12-02 20:19:54

标签: c++ input getline

我试图获得用户输入,直到ctrl-d被击中。如果我是正确的,控制d会发出一个EOF信号,所以我尝试检查cin.eof()是否为真,但没有成功。

这是我的代码

string input;
cout << "Which word starting which year? ";
while (getline(cin, input) && !cin.eof()) {
    cout << endl;
    ...
    cout << "Which word starting which year? ";
}

1 个答案:

答案 0 :(得分:5)

所以你想阅读直到EOF,只需使用while循环和getline即可轻松实现:

std::string line; 
while (std::getline(std::cin, line))
{
    std::cout << line << std::endl;
}

这里使用getline(getline返回流)获得输入,如果按Ctrl+D,则会跳出while循环。

值得注意的是,在Windows和onLinux上触发的EOF不同。您可以从命令行使用CTRL+D(对于* nix)或CTRL+Z(对于Windows)模拟EOF。