如果我们在需要整数的开关情况下输入字符会发生什么
what happens if we input a character in a switch case where an integer is required
do{
cout<<"Enter the task to perform n";
cout<<"1. push an element n";
cout<<"2. pop an element n";
cout<<"3. peep the elements n";
cout<<"4. retain odd elements n";
cout<<"5. remove till element n n";
cout<<"6. Display the elements n";
cout<<"7. exit n";
cin>>a;
switch(a){
case 1:
.
.
.
.
case 2:
case 7:
return 1;
default:
cout<<"Crap entry Reenter nnnnn";
}
}while(a != 7);
return 0;
这是我的代码,我正在尝试制作堆栈如果我在开关盒中输入一个字符,我会得到一个无限的while循环,为什么会这样
请注意
,a
的声明及其初始化方式是提供正确答案的基础,因此请让该声明在您的代码段中可见。
顺便说一下,如果a
是一个整数,并且在cin
中有一些东西不能被读取为 int,cin>>a
失败,cin 就会被阻止(因此任何进一步的读取都将失败(并且值不会被读取。
因此,a
将保留其旧值(并且很可能不会7
,因此不会进行任何return
(,并且永远不会更改。
确保读取的正确方法是使用,cin>>a
while(!(cin>>a))
{
cout << "bad input: re-enter" << std::endl;
cin.cler();
cin.ignore(numeric_limits<streamsize>::max(),'n');
}
换句话说,直到cin>>a
不会成功,错误状态将被清除,并且您可能拥有的任何垃圾都将被丢弃,以便新读取不会重新读取相同的垃圾。
如果a
的类型为 char
,则switch
按字符的 ASCII 值计算字符。
如果a
是int
,输入一个字符会将cin
流设置为失败状态(可以用cin.fail()
查询(。
相关文章:
- 如何忽略第一个字符输入后的所有内容
- 使用单个变量对字符输入进行计数
- 确定用户字符输入 C++ 的结束
- 将单个字符串/字符输入串行监视器
- 如何将字符输入限制为仅获取一个字符串"cin"
- C++:使用 fgets() 读取字符输入时出错
- 如何拒绝 cin 中的字符输入并定义最小和最大整数值
- C++ 字符输入仅输出第一个字母
- 限制 2D 数组中的字符输入
- 循环直到整数输入在所需范围内无法处理非数字字符输入
- C++常量字符*输入
- 使用带符号字符输入的isalnum-Visual C++
- 限制C++中的字符输入
- 字符输入问题
- 字符** + 输入" "字符
- 文件 I/O 操作 - 奇怪的字符输入
- 如何在不暂停循环的情况下使用字符输入停止循环
- C++ - 对'if'语句使用特定字符输入
- 使用 "NEW" 获取字符输入和给定输出,并从用户那里获取字符串长度
- 正确的逐个字符输入