C++在定义了一个int 变量, cin输入int变量时输入的是2个英文字母, 就会一直刷新输入有误, 怎么用最简单的办法解决?

源代码如下:

while (1)
{
            int sex1 =0;
            cin >> sex1;
            if (sex1 == 1 || sex1 == 2)
            {
                abs->personlink[abs->size].gender = sex1;
                break;
            }
            else
            {
                cout << "输入有误请重新输入" << '\n';
            }
        }

如果输入两个字母的话,就会
输入有误请重新输入
输入有误请重新输入
输入有误请重新输入
输入有误请重新输入
输入有误请重新输入
输入有误请重新输入
输入有误请重新输入
输入有误请重新输入
输入有误请重新输入
输入有误请重新输入
输入有误请重新输入
输入有误请重新输入
输入有误请重新输入
输入有误请重新输入
输入有误请重新输入
输入有误请重新输入
输入有误请重新输入
输入有误请重新输入
输入有误请重新输入
输入有误请重新输入
输入有误请重新输入
输入有误请重新输入
输入有误请重新输入
输入有误请重新输入
输入有误请重新输入
输入有误请重新输入
输入有误请重新输入
输入有误请重新输入

img

我的解答思路和尝试过的方法

我试过把字母转成int, 也没用, 也用过goto直接跳到输入cin>>sex1, 也没用, 貌似只要输错就怎么样都不会跳到重新输入动作了,
为什么输错就再也不能重新输入呢? 怎么用最简单的办法解决呢?

我想要达到的结果


用getchar()