int sex = 0;
while (true)
{
cin >> sex;
//如果输入的是1或者2可以退出循环
// 如果输入有误,重新输入
if (sex == 1 || sex == 2) {
abs->personArray[abs->m_Size].m_Sex = sex;
break;
}
cout << "输入有误,请重新输入" << endl;
}
为啥会死循环呀,如何解决?求告知,谢谢
c++中使用cin.sync来清除缓存区的数据流的。如果标示符没有改变那么即使清除了数据流也无法输入。所以cin.clear()和cin.sync()要联合起来使用。
你题目的解答代码如下:
#include<iostream>
using namespace std;
int main()
{
int sex = 0;
while (true)
{
cin >> sex;
//如果输入的是1或者2可以退出循环
// 如果输入有误,重新输入
if (sex == 1 || sex == 2) {
cout << "ok" << endl;
break;
}
cout << "输入有误,请重新输入" << endl;
cin.clear();
cin.sync();
}
}
如有帮助,望采纳!谢谢!