strstr в операторах switch

Я делаю программу, которая позволяет пользователю вводить строку, затем программа ищет различные слова в строке с помощью функции 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]

Что я делаю не так?


person Amol Borkar    schedule 19.03.2014    source источник
comment
разве strstr не возвращает NULL при ошибке? Просто проверьте if (num)   -  person cnd    schedule 19.03.2014
comment
Итак, в общем, что вы делаете неправильно, так это то, что вы не в RTFM. Хороший способ избежать этого - в вопросе SO добавить ручную ссылку на проблемный элемент, например, хороший поиск в Google man strstr.   -  person hyde    schedule 19.03.2014


Ответы (1)


strstr возвращает char* или const char*

Прочтите здесь.

char str1 = "This is a string.";
char str2 = "is";
char* result = strstr(str1, str2);
if (result == NULL)
{
    cout<<"str1 is absent";
}
// etc
person Aesthete    schedule 19.03.2014
comment
Итак, как я могу использовать его с операторами switch - person Amol Borkar; 19.03.2014
comment
Есть только два условия, зачем вам оператор switch. - person Aesthete; 19.03.2014
comment
Я сказал, что это всего лишь прототип, в реальной программе будет несколько условий. Если я использую strstr для поиска is и string, то какой будет синтаксис для этого в операторе switch? - person Amol Borkar; 19.03.2014
comment
Переключатель @hyde работает только для char или int. char * приведет к ошибке. - person Shashwat Kumar; 19.03.2014
comment
@ShashwatKumar Ахм, вы правы, переключатель C не допускает указатели. Так что это не просто плохая практика, она просто не скомпилируется :) - person hyde; 19.03.2014