比较s.at(i)与角色

comparing s.at(i) to a character?

本文关键字:角色 at 比较      更新时间:2023-10-16

我遇到的错误,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字面的。您可以将charchar进行比较。

您正在用双引号")"包裹字符,这使它们成为字符串,或者char *'s。他们应该以单语引号,例如')',因此它们成为char's。