【发布时间】:2018-08-15 11:44:06
【问题描述】:
当我给'choice'一个字符输入时,默认语句会重复执行。 'cin' 指令不会阻塞执行。
#include<iostream>
using namespace std;
main()
{
int choice;
do{
cout<<"Enter your choice: ";
cin>>choice; //I'm giving character i/p even though 'choice' is int
switch(choice)
{
case 1:cout<<"\n 1 \n";
break;
case 2:cout<<"\n 2 \n";
break;
case 3:cout<<"\n 3 \n";
break;
case 4:cout<<"\n 4 \n";
return 0;
default:cout<<"An Invalid choice."<<endl;
}
}while(1);
cout<<"\n Hello";
}
【问题讨论】:
-
你为什么不直接输入数字,这就是你的
switch语句所暗示的意思? -
当我意外输入字符时,默认语句无限执行的原因是什么。为什么在下一次迭代时 'cin' 没有阻塞?
-
你可能想做
if (cin>>choice) { switch... } else break;。其中 switch 是整个当前的 switch 块。 -
Alwyas 检查输入是否成功。它只是反复失败。与
switch声明完全无关。这个问题有很多问题/答案。
标签: c++ switch-statement do-while