首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >c++编译错误: ISO C++禁止比较指针和整数

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

Stack Overflow用户
提问于 2010-02-15 10:05:53
回答 5查看 154.7K关注 0票数 37

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

代码语言:javascript
运行
复制
error: ISO C++ forbids comparison between pointer and integer

这可能是什么原因造成的?下面是代码。错误在if行中:

代码语言:javascript
运行
复制
#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;
}

谢谢!

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2010-02-15 10:10:21

您有两种方法来解决这个问题。首选方法是使用:

代码语言:javascript
运行
复制
string answer;

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

代码语言:javascript
运行
复制
if (answer == 'y') ...

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

票数 50
EN

Stack Overflow用户

发布于 2010-02-15 10:10:17

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

示例:"hello"

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

代码语言:javascript
运行
复制
char c = 'c';
char *p = "hello";

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

要修复此问题,请使用由单引号分隔的char文本。

示例:'c'

票数 7
EN

Stack Overflow用户

发布于 2010-02-15 10:09:25

你需要把那些双引号改成单引号。即。if (answer == 'y')返回true

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

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2263681

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档