Преобразование strcmp в C ++ из 'char' в 'const char *' - PullRequest
2 голосов
/ 13 марта 2012

Здравствуйте, программист noob, у которого проблема с strcmp, это мой код.

while (strcmp("m",wood) !=0 || strcmp("j",wood) !=0 || strcmp("o",wood) !=0){
    cout << "(m for mahogany, o for oak, or p for pine): ";
cin >> wood;
}

и это моя ошибка.

  • restaurant.cpp: В функции-члене void DiningSet :: woodType () ’:
  • restaurant.cpp: 76: 24: ошибка: недопустимое преобразование из «char» в «const char *» [-fpermissive] /usr/include/string.h:143:12: ошибка: инициализация аргумента 2 из int strcmp (const char *, const char *) '[-fpermissive]
  • restaurant.cpp: 76: 48: ошибка: недопустимое преобразование из «char» в «const char *» [-fpermissive] /usr/include/string.h:143:12: ошибка: инициализация аргумента 2 из int strcmp (const char *, const char *) '[-fpermissive]
  • restaurant.cpp: 76: 72: ошибка: недопустимое преобразование из «char» в «const char *» [-fpermissive] /usr/include/string.h:143:12: ошибка: инициализация аргумента 2 из int strcmp (const char *, const char *) '[-fpermissive]

Ответы [ 2 ]

11 голосов
/ 13 марта 2012

wood имеет тип char: это должна быть строка, т. Е. char*, для использования в strcmp().

Изменить на:

while ('m' != wood && 'j' != wood && 'o' != wood)
0 голосов
/ 13 марта 2012

Ошибка показывает проблему со вторым аргументом.Он должен быть const char *

Подпись strcmp:

int strcmp ( const char * str1, const char * str2 );

...