注册 登录
编程论坛 C++教室

请教关于输入异常的问题

知白守黑 发布于 2017-01-02 13:44, 1715 次点击
int order = -1;
 while(order < 0 || order > 5) {/*想读入一个1-5之间的值,但如果输入字符传就会死循环;如下处理只能退出系统,能不能让程序能继续正常运行??*/
  cout << "\n\t\t\t   请选择操作代码:";
  cin >> order;
  if(cin.fail()) {
   exit(0);
  }
 }
百度的是把order改成char类型,但是我想问下还有没其他方法??
4 回复
#2
知白守黑2017-01-02 13:51
void Employee::employeeInsert(){//插入员工记录
jd *p=new jd();   
cout<<"请输入证件号:";
cin>>p->id;
cout<<"请输入姓名:";
cin>>p->name;
if(!slink.linkFind(p->id)){//判断证件号是否存在
 slink.linkInsert(p);
k=true;
}
else
cout<<"证件号"<<p->id<<"的员工已存在,插入失败!"<<endl;

 cout<<"请输入部门:";
 cin>>p->bumen;
 cout<<"基础薪水:";
 cin>>p->jcsalary;
 cout<<"奖金:";
 cin>>p->jiangjin;
 //if(cin.fail)cout<<"输入错误,请重新输入"<<endl;exit(0);
 cout<<endl;
//这是我的部分程序,奖金是定义成INT类型的
#3
九转星河2017-01-02 15:21
c的话就是加fflush(stdin),c++我还没学,不知具体语法~找到和此功能相同的就行了~
#4
yangfrancis2017-01-02 20:39
回复 楼主 知白守黑
关键是你要把order定义成char型。
#5
rjsp2017-01-03 08:34
程序代码:
#include <iostream>
using namespace std;

int main( void )
{
    int order;
    while( !(cin>>order) )
    {
        cin.clear();
        cin.ignore( 1 );
    }

    cout << order << endl;
}
1