【问题标题】:strstr in switch statementsswitch 语句中的 strstr
【发布时间】:2018-01-25 10:45:57
【问题描述】:

我正在制作一个程序,让用户输入一个字符串,然后程序使用strstr 函数搜索字符串中的各种单词,然后根据找到的单词调用不同的函数。我决定使用 switch 语句来检查哪些单词存在。我做了一个原型程序:

int main() {
    char str[] = "This is a string.";
    char str1[] = "is";
    int num = strstr(str, str1);

    switch(num) {
        case 0:
            cout<<"Str1 is present";
            break;
        case -1:
            cout<<"str1 is absent";
            break;
    }
}

这是给我的错误:

从 'char*' 到 'int' 的无效转换 [-fpermissive]

我做错了什么?

【问题讨论】:

  • strstr 不是在失败时返回 NULL 吗?只需检查if (num)
  • 因此,总而言之,您做错的事情是您未能使用 RTFM。避免这种情况的一个好方法是,在 SO 问题中,将手动参考链接添加到有问题的项目,这里例如一个很好的谷歌点击 man strstr

标签: c++ switch-statement strstr


【解决方案1】:

strstr 返回 char*const char*

阅读here

char str1 = "This is a string.";
char str2 = "is";
char* result = strstr(str1, str2);
if (result == NULL)
{
    cout<<"str1 is absent";
}
// etc

【讨论】:

  • 那么如何将它与 switch 语句一起使用
  • 只有两个条件,为什么需要switch语句。
  • 我说只是一个原型,在实际程序中会有几个条件。如果我使用 strstr 搜索 is 和 string 那么 switch 语句中的语法是什么?
  • @hyde 开关仅适用于 char 或 int。 char * 会导致错误。
  • @ShashwatKumar Ahm,你是对的,C 开关不允许指针。所以这不仅仅是不好的做法,它只是不会编译:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-07-25
  • 2013-09-24
  • 2011-10-05
  • 1970-01-01
  • 2012-12-03
  • 2010-09-17
  • 2011-11-27
相关资源
最近更新 更多