真的是小恐龙吗? 2022-04-03 18:46 采纳率: 0%
浏览 21

在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<<"输入有误!请重新输入:";
}

}

运行结果及报错内容
我的解答思路和尝试过的方法
我想要达到的结果
  • 写回答

2条回答 默认 最新

  • 我叫RT 2022-04-03 19:08
    关注
    cin.clear()是用来更改cin的状态标示符的。
    cin.sync()是用来清除缓存区的数据流的
    

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

    评论

报告相同问题?

问题事件

  • 创建了问题 4月3日

悬赏问题

  • ¥15 使用百度地图api 位置函数报错?
  • ¥15 metamask如何添加TRON自定义网络
  • ¥66 关于川崎机器人调速问题
  • ¥15 winFrom界面无法打开
  • ¥30 crossover21 ARM64版本安装软件问题
  • ¥15 mymetaobjecthandler没有进入
  • ¥15 mmo能不能做客户端怪物
  • ¥15 osm下载到arcgis出错
  • ¥15 Dell g15 每次打开eiq portal后3分钟内自动退出
  • ¥200 使用python编写程序,采用socket方式获取网页实时刷新的数据,能定时print()出来就行。