我正在尝试Bjarne Stroustrup的C ++书籍第三版。在实现一个相当简单的函数时,我得到以下编译时错误:
error: ISO C++ forbids comparison between pointer and integer
可能导致这种情况的原因是什么?这是代码。错误发生在if
行:
#include <iostream>
#include <string>
using namespace std;
bool accept()
{
cout << "Do you want to proceed (y or n)?\n";
char answer;
cin >> answer;
if (answer == "y") return true;
return false;
}
谢谢!
答案 0 :(得分:35)
您有两种方法可以解决此问题。首选方法是使用:
string answer;
(而不是char
)。另一种解决方法是:
if (answer == 'y') ...
(注意单引号而不是double,表示char
常量)。
答案 1 :(得分:7)
字符串文字用引号分隔,类型为char * not char。
示例:"hello"
因此,当您将char与char *进行比较时,您将得到相同的编译错误。
char c = 'c';
char *p = "hello";
if(c==p)//compiling error
{
}
要修复使用由单引号分隔的字符文字。
示例:'c'
答案 2 :(得分:5)
您需要将这些双引号更改为单个。
即。 if (answer == 'y')
返回true
;
以下是C ++中String Literals的一些信息: http://msdn.microsoft.com/en-us/library/69ze775t%28VS.80%29.aspx
答案 3 :(得分:3)
“y”是一个字符串/数组/指针。 'y'是字符/整数类型
答案 4 :(得分:2)
您必须记住对char常量使用单引号。 所以使用
if (answer == 'y') return true;
而不是
if (answer == "y") return true;
我对此进行了测试并且可以正常运行