用cin缓冲区做东西直到空

时间:2014-09-25 16:47:10

标签: c++ input buffer cin

我希望通过cin缓冲区读取我的程序,直到其中没有任何内容可供阅读。

有很多地方似乎对此提出了建议:

while (cin)
{
    cin >> s;       
    //do stuff with s
}

但是,当我尝试这个时,即使cin缓冲区为空,程序也会无限地等待输入并执行循环。

while while(cin>> s)完全相同。

2 个答案:

答案 0 :(得分:2)

如果标准输入附加到终端,程序将等待输入,直到它获得EOF条件,您可以使用 Ctrl-D

在POSIX系统上发送该条件

答案 1 :(得分:0)

你是对的,它将永远等待新的一行。

你能做的是:

while(cin >> s){
    //do stuff with s
}

这是做什么的,当你仍然可以阅读s然后做的事情。你最终会到达缓冲区的末尾并停止。

我相信你这样做的方式,计算机认为它仍然可以有一些信息进入。