如何在C ++ Switch中使用字符串?
这是我的C ++代码,请参见下文:
加载:
add_action('before_delete_post', 'wps_remove_attachment_with_post', 10);
function wps_remove_attachment_with_post ($ post_id) {
if (has_post_thumbnail ($ post_id)){
$ attachment_id = get_post_thumbnail_id($ post_id);
wp_delete_attachment ($ attachment_id, true);
}
}
代码:
#include <iostream>
#include<string>`
问题是上述代码给出了以下错误:
using namespace std;
int main()
{
char a[2]={"A","B","C"};
printf("enter the value of a");
scanf("%S",&a);
switch(a)
{
case 'A':
printf("excellent\n");
break;
case 'B':
printf("very good\n");
break;
case 'C':
printf("well done\n");
break;
default:
printf("invalid number\n");
}
return 0;
}
答案 0 :(得分:1)
不幸的是,C ++不允许这样做。我猜您已经习惯了使用Java进行编程,但这在Java中甚至还相对较新。这是有关C ++为何这样做的一个很好的解释:Why the switch statement cannot be applied on strings?
答案 1 :(得分:1)
正如其他人所说,switch
语句不能使用字符串。但是,有两种可能的解决方案正在使用if/else
语句:
if(a == 'A')
//do something
else if(a == 'B')
//do something
etc...
另一方面,您可以将每个字符转换为一个int,然后再次将其转换回:
int int_char = a;
switch(int_char){
case some_int:
//do something
break;
etc...
}
确实有一些很好的解决方案。您只是不能在switch
语句中使用字符串。祝你好运!
答案 2 :(得分:0)
“在switch语句中使用的条件必须具有整数或枚举类型,或者是类类型,其中该类具有到整数或枚举类型的单个转换函数。”
“作为表达式的条件的值就是表达式的值”
c风格的字符串或std :: strings都不满足此条件。
这应该在任何一本优秀的C ++书的第二章中。
答案 3 :(得分:0)
开关仅适用于整数或枚举类型,因此不支持字符串。但是,您的程序可能使用char类型而不是字符串。
int main()
{
char a;
printf("enter the value of a");
scanf("%c",&a);
switch(a)
{
case 'A':
printf("excellent\n");
break;
case 'B':
printf("very good\n");
break;
case 'C':
printf("well done\n");
break;
default:
printf("invalid number\n");
}
return 0;
}