gpt4 book ai didi

c++ - getline 一直在等待标准输入

转载 作者:行者123 更新时间:2023-11-30 02:29:08 26 4
gpt4 key购买 nike

所以从昨天开始我就一直在纠结这个问题,我检查了这里的多篇帖子试图弄清楚这个问题,基本上,我试图从标准输入中读取 1 行或多行到字符串变量中然后使用 istringstream 获取整数值。这就是我所拥有的:

string line;
int num;

while(getline(cin, line)){

istringstream data(line);

while(data >> num){

do stuff...
}
}

然而,外层循环永远不会退出,如果标准输入中没有输入,它只是坐在那里等待,永远不会真正退出循环,所以程序基本上会暂停,直到输入内容,然后再次继续循环.有人能告诉我为什么 getline 在 stdin 上没有任何内容时不只是导致退出条件吗?有人能帮我解决这个问题吗?您的帮助将不胜感激。

最佳答案

if there is no input in the standard input it just sits there waiting and never actually exits the loop, so the program basically pauses until something is entered, and then just continues the loop once more. Can someone tell me why getline doesn't just cause an exit condition when there is nothing on stdin

它的行为符合预期。 "nothing on stdin" 实际上是什么?你的意思是一个空的输入?在这种情况下,您可能希望将循环条件更改为

while(getline(cin, line) && !line.empty()){

也如评论中所述 CTRL-ZCTRL-D (取决于操作系统)后跟 ENTER 输入可能会结束循环.

关于c++ - getline 一直在等待标准输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39905405/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com