Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/161.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;:ctrl+;d终止程序(ubuntu)_C++_Cout_Eof_Clion - Fatal编程技术网

C++ C++;:ctrl+;d终止程序(ubuntu)

C++ C++;:ctrl+;d终止程序(ubuntu),c++,cout,eof,clion,C++,Cout,Eof,Clion,(C++新增) 我有一个简单的代码(问题简化): intmain() { 字符串输入; while(getline(cin,currInput)) { } cout你的错误是while循环。你不应该在这里使用循环。发生的事情是它点击这一行并尝试获取输入。无论你是否键入任何内容,如果你点击CTRL+D,它将结束获取行。但是你在while循环中有它……因此它将跳回循环顶部并获取另一行……然后是另一行。。。.然后是另一行。欢迎来到您的第一个无限循环 while (getline(cin, currIn

(C++新增)

我有一个简单的代码(问题简化):

intmain()
{
字符串输入;
while(getline(cin,currInput))
{
}

cout你的错误是while循环。你不应该在这里使用循环。发生的事情是它点击这一行并尝试获取输入。无论你是否键入任何内容,如果你点击CTRL+D,它将结束获取行。但是你在while循环中有它……因此它将跳回循环顶部并获取另一行……然后是另一行。。。.然后是另一行。欢迎来到您的第一个无限循环

while (getline(cin, currInput))
{
}
最简单的办法就是

getline(cin, currInput);
如果你刚开始编程,这可能是你无论如何都想做的

如果你觉得有勇气,请阅读本页:


您会注意到,
getline
返回您传入的流。就循环而言,它将计算为
true

因此,在@manni和@rici的大量帮助下,我们发现了问题

事实证明这是克莱恩的一个已知问题


“它提到了有关sighup信号的一些内容”您可能想添加代码来忽略信号。我们还没有了解信号,我无法确定任何处理此问题的示例,您有任何参考资料吗?@kobi:您是如何运行该程序的?打开终端。启动该程序。按ctrl+d。它似乎是这样工作的!这都是cLion的错?有办法改变它的行为吗?你能用cLion在你的机器上试用吗(如果你安装了它的话)?首先,谢谢你的评论。我知道写这段代码不是正确的方法,我想简化一个更复杂的问题代码。它不会进入无限循环,它退出并返回0,而不打印最后一行。哦,哈哈。你说的是“(C++新手)”所以我想象你是全新的。@KobiT如果是这样的话,那么SIGHUP链接是一个很好的方式。了解如何处理信号。在不处理信号的情况下,这段代码是如何工作的:在哪些情况下我应该处理它?我见过许多使用getline的while循环示例,但没有一个提到它。解释了返回n
istream
设计用于处理条件语句和
while
语句。
getline(cin, currInput);