在c ++中,如何处理交换机案例中的其他数据类型?

时间:2017-05-21 12:32:36

标签: c++ switch-statement

在C ++中,如何处理交换机案例中的其他数据类型? 类似情况是int类型和用户输入char类型。

Screenshot 1

**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

Screenshot 2

{{1}}

如果用户输入char而不是int,我不知道如何在交换机中处理它。

3 个答案:

答案 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