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(),' '); } } return 0; }
cin>>int,如果输入字母或者其他,着读取失败,输入状态被置成失效位failbit,输入将被阻断,重复执行std::cout<<"enter integers: ",应对办法先检查输入状态,然后
输入状态清零cin.clear(),接着清空输入缓冲区std::cin.ignore(std::numeric_limits<std::streamsize>::max(),' ')。
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()!= ' ') continue; } return 0; }