This question already has an answer here:
invalid int input gets stuck in an infinite loop [duplicate]
(1个答案)
4年前关闭。
给出以下程序
给定此输入文件时(重定向输入)
结尾处有换行符,为什么程序进入无限循环?在文件末尾遇到换行符后,它不应该停止吗?我不断获取
谢谢!
注意
然后will work.
(1个答案)
4年前关闭。
给出以下程序
#include <iostream>
#include <string>
using namespace std;
int main() {
int integer;
cin >> integer;
if (!cin) {
string str;
char ch;
while ((ch = cin.get()) != '\n') {
cout << "scanning" << endl;
cout << "got " << static_cast<int>(ch) << endl;
}
}
return 0;
}
给定此输入文件时(重定向输入)
x123
结尾处有换行符,为什么程序进入无限循环?在文件末尾遇到换行符后,它不应该停止吗?我不断获取
ch
的值作为-1
提取。谢谢!
注意
cin.ignore()
似乎无助于解决问题 最佳答案
如果您在std::cin
(类型为std::istream)上遇到错误,则需要清除它:
int integer;
cin >> integer;
if (!cin) {
cin.clear(); // If an error occurred, we need to clear it!
...
然后will work.
关于c++ - 读到C++中的新行陷入无限循环[duplicate],我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39480438/
10-11 15:11