微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何修复 C++ 中的意外循环

如何解决如何修复 C++ 中的意外循环

我正在制作一个具有 3 个服务的简单数据管理系统

  1. 添加学生。

  2. 查看学生信息。

  3. 删除学生

代码如下:

#include <iostream>
using namespace std;
enum Services
{
    Add=1,View,Del
};
class Student
{
public:
    string Name;
    int Age;
    string Gender;
    int Class;
    
    Student(string Name,string Gender,int Age,int Class)
    {
        this->Name=Name;
        this->Gender=Gender;
        this->Age=Age;
        this->Class=Class;
    }
};
int main()
{
    //Bio Variables
    string Name;
    string Gender;
    int Age;
    int Class;
    
    std::cout<<"•Add A Student [PRESS 1]\n•View Student's information [PRESS 2]\n•Delete A Student [PRESS 3]"<<endl;
    //Creating Instance Of Service ENUM
    Services Serv;
    do
    {
        cout<<"\nWhich Service Do You Want To Access :";
        int Service;
        cin>>Service;
        Service=0;
    }while(Serv!=Add || Serv!=View || Serv!=Del || !cin);
}

它工作正常,但是当我以字符串形式输入时,它会继续循环而没有给我再次输入的机会。

在以字符串形式提供输入之前:

Before giving input as string

输入字符串后:

After giving input in string

请帮我解决这个奇怪的错误

附注:- 代码尚未完成。

抱歉英语不好。

解决方法

如果流处于错误状态(例如,读取 !cin 失败),循环条件中的 true 将返回 int。更不用说@dxiv 提到的条件中奇怪的 != 了。您的意思可能是以下内容:

do
{
    cout << "\nWhich Service Do You Want To Access: ";
    int Input = 0;
    cin >> Input;
    Serv = static_cast<Service>(Input);
} while (cin && Serv >= Add && Serv <= Del);

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。