如何在C ++ Switch中使用字符串?

时间:2018-11-20 15:43:59

标签: c++

如何在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;
}

4 个答案:

答案 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;
}
相关问题