在C++中,我提供了两个输入选择1和2,1代表确定,2代表取消,但是当用户误输其他数字的时候,怎么让用户可以重新输入,直至正确输入1或者2?

问题遇到的现象和发生背景

在C++中,我提供了两个输入选择1和2,1代表确定,2代表取消,但是当用户误输其他数字的时候,怎么让用户可以重新输入,直至正确输入1或者2?

问题相关代码,请勿粘贴截图

void WorkerManager::Clean_File()
{
cout<<"确定清空吗?"<<endl;
cout<<"1、确定"<<endl;
cout<<"2、取消"<<endl;

int select = 0;
cin>>select;

if(select == 1)
{
    //用户想要清空文件
    ofstream ofs (FILENAME,ios::trunc); //删除文件后重新创建
    ofs.close();

    //删除堆区的每个职工对象
    if(this->m_EmpArray != nullptr)
    {
        for(int i=0; i<m_EmpNum; i++)
        {
            delete this->m_EmpArray[i];
            this->m_EmpArray[i] = nullptr;
        }
    }

    //删除堆区数组指针
    delete [] this->m_EmpArray;
    this->m_EmpArray = nullptr;
    this->m_EmpNum = 0;
    this->m_FileIsEmpty = true;

    cout<<"清空成功"<<endl;
    system("pause");
    system("cls");
}

else if(select == 2)
{
    system("cls");
}
else
{
    cout<<"输入有误!请重新输入:";
}

}

运行结果及报错内容
我的解答思路和尝试过的方法
我想要达到的结果
cin.clear()是用来更改cin的状态标示符的。
cin.sync()是用来清除缓存区的数据流的

放在cin之前,用于清理输入时,残留在输入缓冲区的字符

用个死循环不就行