(C ++新手)
我有这个简单的代码(简化问题):
int main()
{
string currInput;
while (getline(cin, currInput))
{
}
cout << "wont be printed" << std::flush;
return 0;
}
我已经调试了一段时间,我可能会错过一些东西:
运行它并按ctrl + d(在某些字符串之后或立即执行)时,它不会打印while循环之后的字符串。它只是停止运行。我觉得它可能是潮红的东西,所以我也补充说。 我错过了什么?
PS:在调试中运行时,会提到有关sighup信号的信息。
答案 0 :(得分:0)
答案 1 :(得分:-2)
您的错误是while循环。你不应该在这里使用循环。会发生什么事情就是命中这一行并试图获得输入。无论你输入什么内容,如果你点击CTRL + D,它将结束getline。但是你有一个while循环....所以它会跳回到循环的顶部并得到另一条线...然后是另一条线....然后是另一条线。欢迎来到你的第一个无限循环。
while (getline(cin, currInput))
{
}
最简单的事情就是
getline(cin, currInput);
如果你开始编程,这可能就是你想要做的。
如果您感到胆大,请阅读此页:http://www.cplusplus.com/reference/string/string/getline/
您会注意到getline
会返回您传入的流。就循环而言,这将评估为true
。