Getline一直等待标准输入
getline keeps waiting on standart input
所以我一直在扯我的头发从昨天开始,我已经检查了多个帖子在这里试图弄清楚这一点,基本上,我试图从标准输入读取1或更多行到字符串变量,然后使用istringstream来获得整数值。这是我的:
string line;
int num;
while(getline(cin, line)){
istringstream data(line);
while(data >> num){
do stuff...
}
}
然而,外部循环永远不会退出,如果标准输入中没有输入,它只是坐在那里等待,永远不会真正退出循环,所以程序基本上暂停,直到输入一些东西,然后再次继续循环。有人能告诉我为什么getline不只是导致退出条件时没有stdin,有人能帮助我解决这个问题,你的帮助将非常感激。
如果在标准输入中没有输入,它只是坐在那里等待,永远不会真正退出循环,所以程序基本上暂停,直到输入一些东西,然后再次继续循环。有人能告诉我为什么当stdin
上没有任何内容时,getline不只是导致退出条件吗?
它的行为就像预期的那样。"nothing on stdin"到底是什么?你是说一个空输入吗?在这种情况下,您可能需要将循环条件更改为
while(getline(cin, line) && !line.empty()){
也正如在注释中提到的CTRL-Z或CTRL-D(取决于操作系统)后面跟着ENTER输入可能会结束循环
问题是标准输入(cin)将读取一行,并且由于getline返回'true'(引用!= 0),循环将永远继续请求另一行。
如果你想从输入中读取一行,你应该避免使用while:
string line;
int num;
getline(cin, line)){
istringstream data(line);
while(data >> num){
do stuff...
}
相关文章:
- 从标准输入读取文件后读取用户输入
- 如何从标准输入中检测格式化输入错误?
- C++ - 标准输入环路
- 快速读取标准输入缓冲区,无需检查
- 将标准输入中的双精度存储在矢量中
- 如何将 getline 与标准输入一起使用?
- 从 C++ 中的标准输入迭代读取字节
- C++计算标准输入的字数
- 如何从 c++ 中的给定标准输入中获取每个字符的偏移量?
- 为什么此代码从标准输入中少一个输入?
- 如何在C++中从标准输入中获取变量输入
- C++ 从标准输入读取文件名
- 从标准输入读取多个类型时出现问题
- 如何在execl中使用标准输入'<'?
- 如何在 eclipse 中将标准输入从控制台更改为另一个程序
- 流对象来表示文件输入,然后是标准输入?
- 标准输入输出操作如何C++完成
- 从标准输入读取时zmq_poll不侦听信号
- 正在检查标准输入上的等待输入
- Getline一直等待标准输入