在C++控制台程序中,常常需要用cin输入某个类型的变量,但是因为客户可能输入与变量类型不相符的情况。此时需要在处理数据前判断输入是否正确,不正确的时候重新输入。
简单的处理过程如下所示:
#include <iostream>
using namespace std;
int main()
{
int nFunc = -1;
do
{
cout << "AAA: ";
if (cin >> nFunc)
{
int n = 1;
}
else{
continue;
}
switch (nFunc)
{
case 1:
cout << "111\n";
break;
case 2:
cout << "222\n";
break;
default:
break;
}
} while (nFunc!=0);
}
以上代码的目的是,当输入的不是整型数的时候(如输入w),继续循环,重新输入nFunc。实际观察可以看到,程序并不会给第二次输入的机会,而是会不断输出AAA: 。
产生上述的原因我觉得应该是错误格式的w被一直放在输入流中,导致每回cin都是取到w,然而w并不是我们要的int格式,所以一直输出AAA。解决办法是清空输入流的数据。这里如果用C的fflush(stdin)是没有用的,应该使用C++的clear等方法。具体如下所示:
#include <