C++;开关语句 最近(昨天哈)我开始学习C++。我想做一个简单的计算器来练习。我使用一个开关语句来调用正确的方法(或者它是函数…不知道C++中的细微差别…)在类中;br/>但是,代码将不会编译,因为我使用字符串定义要使用的大小写,并且定义多个类以获得相同的结果

C++;开关语句 最近(昨天哈)我开始学习C++。我想做一个简单的计算器来练习。我使用一个开关语句来调用正确的方法(或者它是函数…不知道C++中的细微差别…)在类中;br/>但是,代码将不会编译,因为我使用字符串定义要使用的大小写,并且定义多个类以获得相同的结果,c++,switch-statement,C++,Switch Statement,下面是switch语句(在添加其他bug之前,我只做了一些添加来消除任何bug): 开关(输入){ 案例“A”:案例“A”:案例“添加”:案例“添加”: cout在C++中,switch语句接受一个int参数,您试图将它与字符串一起使用,这在C++中是无法做到的 在这个特定的例子中,我认为您尝试使用开关所做的工作非常简单,而if else块会更好(另外,它实际上可以使用字符串) 例如: if(input == "A" || input == "a" || input == "add" || in

下面是switch语句(在添加其他bug之前,我只做了一些添加来消除任何bug):

开关(输入){
案例“A”:案例“A”:案例“添加”:案例“添加”:

cout在
C++
中,
switch
语句接受一个
int
参数,您试图将它与
字符串一起使用,这在
C++
中是无法做到的

在这个特定的例子中,我认为您尝试使用
开关
所做的工作非常简单,而
if else
块会更好(另外,它实际上可以使用
字符串

例如:

if(input == "A" || input == "a" || input == "add" || input == "Add") {
    cout << bo.addNum();
} else {
    cout << "Not addition";
}
请记住,如果这样做,您将输入
case'A':case'A:
用户是否键入
A
A
添加
添加
添加
添加
,或
苹果
,或
字母表
,或任何以
A开头的内容

字符串输入

试着把它改成

char input 

原因是C/C++switch语句采用int参数,不支持字符串作为类型。尽管它支持常量数组的概念。另外,C/C++switch语句通常生成为,使用
字符串
样式的开关生成分支表并不容易

在C++中,Switt语句以<代码> int <代码>为参数。

为什么不能输入开关并获取以下错误?

basic.cpp:42:28: warning: multi-character character constant [-Wmultichar]
                case 'A': case 'a': case 'add': case 'Add':
                                         ^
basic.cpp:42:40: warning: multi-character character constant [-Wmultichar]
                case 'A': case 'a': case 'add': case 'Add':

原因是因为要生成C++的代码,编译器必须理解两个值相等的含义。对于int和枚举,它是平凡的和容易的,因为它们是常数值。但是当涉及到字符串时,很难导致错误。

,正如上面所说的,C++不支持使用用户定义类型。(STD::String是用户定义类型)在SwitchStutal.它只允许使用整型或枚举.类型char属于整数类型.如果您想在SwitchSt声明中使用字符串,那么在C++中编写程序.

< P>欢迎来到C++的世界,希望您喜欢. 无论如何,让我们谈谈你的问题。首先,方法和函数是同义的

其次,单引号用于单个字符,双引号用于字符串。 如中所示,我有一个字符串
“Rabbiya”
,它由字符
“R”、“a”、“b”、“I”、“y”组成。明白了吗?
所以你在代码中这样写
“add”
“a”
,明白吗

同样在switch语句中,您使用两种不同的数据类型来检查条件,一种是字符,另一种是字符串。
“add”
“add”
是字符串,
'a'
'a'
是字符。这是错误的。案例具有switch语句的参数可以或可能采用的值。参数显然是特定类型的变量,我们将讨论这一点

案例的数据类型必须与
switch
-语句的参数的数据类型相同。您可以做一件事,不保留
字符
字符串
,而是要求用户使用数字来识别他们执行的操作。例如

inta=0;

cout您可以使用任何类型的c/c++。您的代码如下:

SWITCH(input)
    CASE("A") FALL
    CASE("a") FALL
    CASE("Add") FALL
    CASE("add") FALL
        cout << bo.addNum();
        BREAK
    DEFAULT
        cout << "Not addition";
END
开关(输入)
案件(“A”)坠落
案件(“a”)坠落
案例(“添加”)下降
案例(“添加”)下降

很抱歉,您不能为字符串参数使用switch语句。您应该将其更改为int或char。switch语句与enum配合使用非常好,了解enum后,您的计算器仍然可以与switch和enum配合使用。这篇文章提供了一些很好的信息switch是什么:这非常有帮助。也许最好使用其他语句如果是逻辑的话?@rsheeler:-是的,在这种情况下这是个更好的主意!
switch(input[0]) {
    case 'A': case 'a':
        //stuff
        break;
    case 'S': case 's':
        //stuff
        break;
    //and so on
    default:
        //stuff
        break;
}
char input 
basic.cpp:42:28: warning: multi-character character constant [-Wmultichar]
                case 'A': case 'a': case 'add': case 'Add':
                                         ^
basic.cpp:42:40: warning: multi-character character constant [-Wmultichar]
                case 'A': case 'a': case 'add': case 'Add':
SWITCH(input)
    CASE("A") FALL
    CASE("a") FALL
    CASE("Add") FALL
    CASE("add") FALL
        cout << bo.addNum();
        BREAK
    DEFAULT
        cout << "Not addition";
END