c ++编译错误:ISO C++禁止指针和整数之间的比较

Mor*_*ock 27 c++ compiler-errors

我正在尝试Bjarne Stroustrup的C++书籍第三版.在实现一个相当简单的函数时,我得到以下编译时错误:

error: ISO C++ forbids comparison between pointer and integer
Run Code Online (Sandbox Code Playgroud)

可能是什么导致了这个?这是代码.错误在于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;
}
Run Code Online (Sandbox Code Playgroud)

谢谢!

Chr*_*ung 38

你有两种方法来解决这个问题.首选方式是使用:

string answer;
Run Code Online (Sandbox Code Playgroud)

(而不是char).另一种可能的解决方法是:

if (answer == 'y') ...
Run Code Online (Sandbox Code Playgroud)

(注意单引号而不是double,表示char常量).


Bri*_*ndy 7

字符串文字用引号分隔,类型为char*而不是char.

例: "hello"

因此,当您将char与char*进行比较时,您将获得相同的编译错误.

char c = 'c';
char *p = "hello";

if(c==p)//compiling error
{
} 
Run Code Online (Sandbox Code Playgroud)

要修复使用由单引号分隔的char文字.

例: 'c'


Cra*_*aig 5

您需要将这些双引号更改为单个.即.if (answer == 'y')回报true;

以下是C++中字符串文字的一些信息:http: //msdn.microsoft.com/en-us/library/69ze775t%28VS.80%29.aspx

  • 不,双引号是`char []`(一堆字符),单引号是一个`char`. (5认同)