c++ int 输入字母进入死循环了

     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();
    }
}

如有帮助,望采纳!谢谢!