C++ 如何修复C++;

C++ 如何修复C++;,c++,c++11,visual-c++,c++17,C++,C++11,Visual C++,C++17,我正在制作一个简单的数据管理系统,它有3个服务 添加一个学生 查看学生信息 删除学生 代码如下所示: #include <iostream> using namespace std; enum Services { Add=1, View, Del }; class Student { public: string Name; int Age; string Gender; int Class; Stud

我正在制作一个简单的数据管理系统,它有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);
    }
    
    #包括
    使用名称空间std;
    枚举服务
    {
    相加=1,
    看法
    德尔
    };
    班级学生
    {
    公众:
    字符串名;
    智力年龄;
    字符串性别;
    int类;
    学生(字符串名称、字符串性别、整数年龄、整数类)
    {
    此->名称=名称;
    这->性别=性别;
    这个->年龄=年龄;
    这个->类=类;
    }
    };
    int main()
    {
    //生物变量
    字符串名;
    字符串性别;
    智力年龄;
    int类;
    
    std::cout如果流处于错误状态(例如读取
    int
    失败),循环条件中的
    !cin
    将返回
    true
    。更不用说@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);
    
    do
    {
    cout>输入;
    Serv=静态_转换(输入);
    
    }当(cin&&Serv>=Add&&Serv
    Serv!=Add | | Serv!=View | | Serv!=Del
    这将始终是正确的,因为没有
    Serv
    可以等于所有三个值。我猜您的意思是
    &
    | cin
    很难猜这是怎么回事。在循环的第三行,您还手动将服务设置为0,这将结束使用您之前获得的用户输入。@dxiv我后来注意到了。顺便说一句,在这种情况下,我想说如果输入!=int继续again@AtifIqbal请参阅以了解如何实现该功能。