我遇到的错误,C 禁止将指针与字符进行比较
无论我在哪里比较s.at(i),任何一种 - fpermissive错误。
string s;
cout<<"Enter the expression";
getline(cin,s);
int i;
for(i=0;i<s.length();i++)
{
if(s.at(i)=="("||s.at(i)=="["||s.at(i)=="{")
push(s.at(i));
}
for(i=0;i<s.length();i++)
{
if(s.at(i)=="]"||s.at(i)==")"||s.at(i)=="}")
{
x=pop();
if (s.at(i)==x)
continue;
else
{enter code here
cout<<"nInvalid expression";
return 0;
}
}
}
考虑 s.at(i)=="("
。
文字 "("
实际上是 const char[2]
类型(一个 (
的一个元素,另一个用于nul-terimator),在某些情况下, nul-terimator 衰减到const char*
指针中,例如使用==
时的情况。
s.at(i)
返回单个char
类型,该类型正在与const char*
指针进行比较。您有用的编译器警告您此错误。
解决方案很简单:而是使用'('
,这是一个char
字面的。您可以将char
与char
进行比较。
您正在用双引号")"
包裹字符,这使它们成为字符串,或者char *
's。他们应该以单语引号,例如')'
,因此它们成为char
's。