С ++ запрещает сравнение между указателем и целым числом

Возможный дубликат:
ISO C ++ запрещает сравнение между указателем и целым числом [-fpermissive] | [C ++]

#include <iostream>

using namespace std;

int main()
{
char name[20];
char color[20];
char response[20];
int age;
cout << "What is your name?\n";
cin.getline(name, 20); cout << endl;
cout << "What is your favorite color?\n";
cin.getline(color, 20); cout << endl;
cout << "How old are you?\n";
cin >> age;
cout << "Your name is " << name << ", your favorite color is " << color << " and you are " << age << " years old!\n";
cin.get();
cout << "You wake up from bed all you know is your name and age.\n";
cout << "You are wearing a plain " << color << " t-shirt.\n";
cout << "You see a gun on the table.\n";
cout << "You see a door.\n";
cout << "What do you do?\n";
cin.getline(response, 20);
if(response == 'Pick up the gun')
{
cout << "You pick up the gun.\n";
cout << "Knock down the door with it? (Y/N)\n";
cin.getline(response, 20);
if(response == 'Y')
{
cout << "The door opens.\n";
cout << "You see a zombie.\n";
cout << "You see an open window.\n";
cout << "What do you do?\n";
cin.getline(response, 20);
if(response == 'Shoot the zombie')
{
cout << "The zombie dies and it attracts other zombies.\n";
cout << "GAME OVER!\n";
cin.get();
return 0;
}
else if(response == 'Jump out the window')
{
cout << "The zombie does not hear you and you safely make it out!\n";
cout << "VICTORY!\n";
cin.get();
return 0;
}
}
else if(response == 'N')
{
}
}
else if(response == 'Open the door')
{
cout << "It appears to be locked.\n";
}
return 0;
}

пытаюсь сделать супер ультра короткую и простую текстовую игру, но она не работает!
мои ошибки:

24 error:no matching function for call to 'std::basic_istream<char>::getline(std::string&)'

а также на КАЖДОЙ ОДНОЙ ЛИНИИ с ответом if вещи, которые я получаю
C ++ запрещает сравнение между указателем и целым числом

я не пытаюсь сделать это каким-либо образом формы или формы о_о
кажется, ничто не помогает решить это. люди, кажется, заставляют его работать, потому что они используют "" вместо '' и они меняют его на '' и работает нормально. но я всегда использую ''!

-1

Решение

Для операторов if вы должны использовать:

if(strcmp(response,"Pick up the gun"))

Но на самом деле, все ваши проблемы станут намного проще, если вы используете std::string

#include <string>
using namespace std;
int main()
{
string name;
string response;
getline(cin, response);
if !(response.compare("Pick up the gun"))
{
//Do stuff here for picking up gun
}
}
3

Другие решения

Просто используйте strcmp, прочитайте о массивах и разыменованиях и знайте, что «A» обозначает верхний регистр ASCI A, где «A» обозначает строку, то есть [‘A’, ‘null’].

http://www.cplusplus.com/reference/clibrary/cstring/strcmp/

2

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector