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

新手上路,请多包涵

我正在尝试 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;
}

谢谢!

原文由 Morlock 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 4.3k
2 个回答

您有两种方法可以解决此问题。首选方法是使用:

 string answer;

(而不是 char )。另一种可能的修复方法是:

 if (answer == 'y') ...

(注意单引号而不是双引号,代表 char 常量)。

原文由 C. K. Young 发布,翻译遵循 CC BY-SA 2.5 许可协议

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

示例: "hello"

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

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

if(c==p)//compiling error
{
}

要修复使用由单引号分隔的字符文字。

示例: 'c'

原文由 Brian R. Bondy 发布,翻译遵循 CC BY-SA 2.5 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏