编写通讯录创建的问题

在创建通讯录时,需要添加联系人的性别,用1代表男,2代表女
代码如下:

cout << "请输入性别: " << endl;
        cout << "1-------男 " << endl;
        cout << "2-------女: " << endl;
        while (true) 
        {    //死循环,如果输入正确就退出循环,否则一直进行输入
            int sex = 0;
            cin >> sex;
            if (sex == 1 || sex == 2) 
            {
                abs->array[abs->p_Size].p_Sex = sex;
                break;
            }
            else
            {
                cout << "输入有误,请重新输入" << endl;
            }
        }


但当用户误输入字母时会陷入死循环中,请问如何破解这个循环?怎样解决用户误输入字母的情况?
感谢回答!

增加sex是大、小写a到z的情况

while (true) 
        {    //死循环,如果输入正确就退出循环,否则一直进行输入
            int sex = 0;
            cin >> sex;
            if (sex == 1 || sex == 2) 
            {
                abs->array[abs->p_Size].p_Sex = sex;
                break;
            }
            else if((sex>96 && sex<123) || (sex>64 && sex<91))
            {
                break;
            }
            else
            {
                cout << "输入有误,请重新输入" << endl;
            }
        }