1.
#include <iostream> #include <limits> int main() { int choice_i= 0; while(choice_i!= 5) { std::cout<<"enter integers: "; std::cin>>choice_i; if(0== std::cin.good()) { std::cin.clear(); std::cin.ignore(std::numeric_limits<std::streamsize>::max(),'\n'); } } return 0; }
cin>>int,如果输入字母或者其他,着读取失败,输入状态被置成失效位failbit,输入将被阻断,重复执行std::cout<<"enter integers: ",应对办法先检查输入状态,然后
输入状态清零cin.clear(),接着清空输入缓冲区std::cin.ignore(std::numeric_limits<std::streamsize>::max(),'\n')。
2.补充上面,更为简单的way
#include <iostream>
int main()
{
using std::cin;
using std::cout;
using std::endl;
double arr_d[10]= {0};
int n= 0;
cout<<"enter the numbers ";
while (cin>>arr_d[n] && n< 10)
{
cout<<"enter the numbers ";
n++;
}
if (!cin.good())
{
cin.clear();
while (cin.get()!= '\n')
continue;
}
return 0;
}