:それは「runtime_error」例外がスローされますが、行くとき問題++(「CIN」文)
int main(){
std::cout<<"enter numbers to be divide"<<std::endl;
int a,b,c;
while(true){
try{
if(!(std::cin>>a>>b)){
throw std::invalid_argument("please enter proper interger");
}
if(b==0){
throw std::runtime_error("please enter enter nonzero divisor");
}
c=a/b;
std::cout<<"quotient = "<<c<<std::endl;
}
catch(std::invalid_argument e){
std::cout<<e.what()<<"\ntry again?enter y/n";
char c;
std::cin>>c;
if(c=='n'||c=='N') break;
}
catch(std::runtime_error e){
std::cout<<e.what()<<"\ntry again?enter y/n";
char c;
std::cin>>c;
if(c=='n'||c=='N') break;
}
}
return 0;
}
私はexception.Programの2種類を使用していますが完璧に働いています"invalid_argument"例外が発生した場合、無限ループに入ります。実際にはキャッチブロックの "cin>>c
"ステートメントに問題がありますが、なぜこれが起こっているのかわかりません。
"invalid_argument"のキャッチブロックから入力シナリオ全体を削除し、 "break"文だけを置くと、プログラムが完璧に動作します。 –
この回答を見る:http://stackoverflow.com/questions/2407771/c-character-to-int/2407991#2407991 – kennytm
ありがとうKenny、私はcinストリームを流すために2つのステートメントを使用します。 "std :: cin.clear(); std :: cin.ignore(80、 '\ n');" "std :: numeric_limits :: max()"エラーが発生しています。 プログラムは現在完全に動作しています –