【发布时间】:2020-01-17 12:42:13
【问题描述】:
ISO C++ 禁止指针和整数比较 [-fpermissive]
if(S[i] == "#")
^~~
#include <iostream>
using namespace std;
int main() {
string S = "a#b#";
for( int i=0; i< S.length(); i++){
if(S[i] == "#")
//do somethng
}
return 0;
}
在谷歌上搜索此错误时,我发现了一种解决方法,方法是使用 if( &S[i] == "#") 中的“&”,它工作正常。有人可以告诉我为什么这样做,这里发生了什么?
【问题讨论】:
-
S[i]是一个字符,所以应该与其他字符进行比较,而不是字符串:if(S[i] == '#') -
不要将没有编译器错误与“工作正常”混淆。
if( &S[i] == "#")可能没有做你认为的事情 -
@m88 谢谢。我现在明白了。