c++ - 将 s.at(i) 与一个字符进行比较?

标签 c++ string templates

我收到 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 终止符),衰减const char*某些情况下的指针,例如使用 == 时的这种情况.

s.at(i)返回单个 char类型,正在与 const char* 进行比较指针。您有用的编译器警告您此错误。

解决方案很简单:使用'('相反,它是一个 char文字。你可以比较一个charchar .

关于c++ - 将 s.at(i) 与一个字符进行比较?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46246055/

相关文章:

python - 如何将类似字符串的字节转换为普通字节?

string - 如何在同一规则中混合字符串解析和 block 解析?

templates - 如何循环遍历 scala 模板中的 flash 元素?

c++ - 我们可以使用 mfc 应用程序创建 pdf 文件吗?

c++ - 性能与 SSE 相同

c++ - 重新发明轮子 : the time class

java - 字符串格式 : 2 => 02

c++ - 用于 boost 多索引容器的模板参数

c++ - 如何在构造函数上指定不可推导的模板参数?

c++ - 我的函数以字符串类型给出当前日期有什么问题