让用户输入指定范围内的数字,如果不正确 重新输入
- cin.fail() 看标志位 0正常 1不正常
- cin.clear()重置标志位
- cin.syne() 清空缓冲区 解决不了死循环问题
void test07() { int num; cout << "请输入0-10的数字" << endl; while (true) { cin >> num; //获取输入的数字 if (num > 0 && num <= 10) { cout << "您输入的数字是:" << num << endl; break; } cout << "请重新输入" << endl; //如果输入的是数字 那么程序运行正常,如果输入的是不是数字类型 那么就会无限循环这句话 //原因是因为标志位 如果cin>>num 数据类型错误 那么标志位会变成1 } }
结果:
查看标志位
结果:
解决办法:重置标志位
void test07() { int num; cout << "请输入0-10的数字" << endl; while (true) { cin >> num; //获取输入的数字 if (num > 0 && num <= 10) { cout << "您输入的数字是:" << num << endl; break; } //cout << "请重新输入" << endl; //如果输入的是数字 那么程序运行正常,如果输入的是不是数字类型 那么就会无限循环这句话 //原因是因为标志位 如果cin>>num 数据类型错误 那么标志位会变成1 cin.clear(); //重置标志位 cin.sync(); //清空缓冲区 cout << "标志位:" << cin.fail() << endl; //0 正常 1 错误 } }
结果:
问题没解决 还是死循环???