问题描述
我正在制作一个具有 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);
}
它工作正常,但是当我以字符串形式输入时,它会继续循环而没有给我再次输入的机会。
在以字符串形式提供输入之前:
输入字符串后:
附注:- 代码尚未完成。
抱歉英语不好。
解决方法
如果流处于错误状态(例如,读取 !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);