如何解决如何修复 C++ 中的意外循环
我正在制作一个具有 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);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。