#include<iostream>
using namespace std;
int main(){
int temp;
char ch;
/*
//1
while(1){
cin>>temp;
if(!cin.fail()){ //这个只接收数字(正或者负),如果出现非数字就提示重新输入,注意temp是int型的
cout<<temp<<endl;
continue;
}
cin.clear();//恢复cin状态
//cin>>ch; //将输入的非法字符读走
//或者
cin.sync(); //把输入缓冲区清空
cout<<"非数字"<<endl;
}
//2
while(cin>>ch){
if((int)ch>48 && (int)ch<57)
cout<<"数字:"<<ch-48<<endl;
else
cout<<"非数字:"<<ch<<endl;
}*/
//3
while(1){ //这里可以设置一下最多输出多少次就退出大while循环
cin>>temp;
try{
if(cin.fail())
throw 1;
}
catch(int){
cin.clear();
cin.sync();
cout<<"非数字"<<endl;
continue;
}
cout<<temp<<endl;
}
/*
//4
while(1){
cin>>temp;
try{
if(cin.fail())
throw runtime_error("非数字");
}
catch(runtime_error &e){
cin.clear();
cin.sync();
cout<<e.what()<<endl;
continue;
}
cout<<temp<<endl;
}*/
return 0;
}
C++捕获cin输入错误类型值的问题
最新推荐文章于 2023-10-31 17:02:53 发布