C++;开关语句 最近(昨天哈)我开始学习C++。我想做一个简单的计算器来练习。我使用一个开关语句来调用正确的方法(或者它是函数…不知道C++中的细微差别…)在类中;br/>但是,代码将不会编译,因为我使用字符串定义要使用的大小写,并且定义多个类以获得相同的结果
下面是switch语句(在添加其他bug之前,我只做了一些添加来消除任何bug):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
开关(输入){
案例“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