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
相关产品推荐
相关产品推荐

