在C ++中,如何处理交换机案例中的其他数据类型? 类似情况是int类型和用户输入char类型。
**left window**
:start
{
cout<<"Select Options \n";
cout<<" 1 for Human vs Human\n 2 for Human vs Computer\n 3 for Computer vs Computer
cin>>opt;
switch(opt)
{
case 1:
play( Player1, Player2);
break;
case 2:
play( Player1, Comp1);
break;
case 3:
play(Comp1, Comp2);
break;
default:
cout<<" Invalid entry!!!\n Please enter 1,2 or 3!!!\n";
goto start;
}
}
**right window**
Select Options
1 for Human vs Human
2 for Human vs Computer
3 for Computer vs Computer
h
{{1}}
如果用户输入char而不是int,我不知道如何在交换机中处理它。
答案 0 :(得分:1)
switch
语句对整数(以及可隐式转换为整数的类型)进行操作。如果您有string
或其他类型,请不要使用switch
。
答案 1 :(得分:0)
C ++仅处理切换整数
condition - 整数或枚举类型的任何表达式,或者类类型&gt;上下文可隐式转换为整数或枚举类型,或者带有大括号或类型的单个非数组变量的&gt;声明-equals&gt;初始化器。
因此您的数据必须是int类型或强制转换为int类型。对于字符,您可以使用单引号来获取其数值
switch(opt)
{
case 'A' : // do something for A
break;
case 'B' : // do something for B
break;
default : break; //neither A or B were assigned to userInput
...etc
}
答案 2 :(得分:0)
我认为这个问题根本不是关于switch语句,而是关于处理来自undefined
的错误输入。如果用户输入的值不是int,那么您不想尝试在交换机中处理它。您想检测它并可能发出错误消息并让它们再次尝试或退出。
试试这个。
cin
另一个相关答案here。