程序在输入错误的情况下进入无限循环
Program goes into infinite loop in case of wrong input
我正在尝试检查输入值,并在下面运行此程序。但是当我给出错误的输入时,它会进入无限循环。我尝试了cin.clear();
但它仍然进入无限循环。请谁能给我一个解决方案。
#include<iostream>
using namespace std;
int main()
{
int c=0;
cout<<"in test"<<endl;
//cin.clear();
cin>>c;
if(cin.fail())
{
cout<<"please try again"<<endl;
main();
}
else
cout<<"c = "<<c<<endl;
return 0;
}
在cin.clear()
后使用 cin.ignore()
从流缓冲区中删除无效输入。使用 cin.clear()
不会删除之前的输入,因此它会一直进入无限循环。 cin.clear()
仅重置状态,即错误标志等。
试试这个:
cin.ignore(INT_MAX,'n');
它会清除,直到遇到第一个换行符。
首先:
不能从程序中的任何位置调用 main()
函数。
第二:
尝试这样的 while 循环:
while (cin.fail())
{
cout << "Please try again" << endl;
cin.clear();
cin.ignore();
}
相关文章:
- 如何在不知道C++中有多少可选参数的情况下在循环中使用va_arg?
- 循环依赖,在继承类的情况下使用覆盖方法
- C++在不使用pow或循环的情况下计算一个数字的幂
- 如何在不循环的情况下使用getline读取文件
- 如何在没有同步的情况下使用多个线程(2、4,8、16 个线程)在循环(10,100、1000 个周期)中打印字符串?
- 如何在没有可变参数函数的情况下循环函数的参数
- 如果 return 语句在带括号的循环中,错误可能会到达非 void 函数的末尾,但不会显示在没有括号的循环的情况下
- 在给定相同的输入的情况下,某些代码怎么可能花费更多时间来运行,这似乎只是因为它处于循环中?
- 如何在不中断整个循环的情况下跳过循环交互 - C++
- 如何在不停滞主循环的情况下实现对话系统?
- 如何在不将其拆分为两个嵌套循环的情况下打印整个形状?
- 了解如何在不冻结事件循环的情况下在 QThread 中休眠/等待
- 视觉 在C++中,我试图在没有递归的情况下循环访问许多对象
- 在给定长度无限循环的情况下,在Collatz猜想中查找起始数的代码
- 如何在没有无限循环的情况下使用 CMake 的add_subdirectory
- 使用sigaction()可以在没有全局变量的情况下中断C++中的无限循环
- Cout在无限循环的情况下不起作用
- 我怎样才能在不无限重复的情况下保持循环
- 如何在没有if-else的情况下无限循环或循环到极限
- 程序在输入错误的情况下进入无限循环