You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C++中如何正确比较string[i]与字符?解决指针与整数比较错误

解决C++字符比较的指针与整数类型不匹配报错

错误代码

int change(int x)
{
    for(auto i=x+1;i<line.length();i++)
    {
        if(line[i]=="-")
        {
            line[i]="+";
        }
        else if(line[i]=="+")
        {
            line[i]="-";
        }
    }
}

错误提示

ISO C++ forbids comparison between pointer and integer [-fpermissive]

问题

如何正确比较line[i]与'+'、'-'这类字符?


原因与解决方法

问题出在代码中使用了双引号包裹的字符串字面量("-"、"+"),它们的类型是const char*(指针类型),而line[i]是单个字符,类型为char(属于整数类型),C++不允许指针和整数直接比较,因此触发报错。

正确的做法是使用单引号包裹的字符字面量('-'、'+'),单引号对应单个字符,类型和line[i]完全匹配,不会出现类型不兼容的问题。

修正后的代码

int change(int x)
{
    for(auto i=x+1;i<line.length();i++)
    {
        if(line[i]=='-')
        {
            line[i]='+';
        }
        else if(line[i]=='+')
        {
            line[i]='-';
        }
    }
}

内容的提问来源于stack exchange,提问作者nojingu1357

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 03:22:07