比较s.at(i)与角色
comparing s.at(i) to a character?
我遇到的错误,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。
相关文章:
- 如何处理来自核心指南检查器的关于gsl::at的静态分析警告
- "CID"在AT+HTTPPARA= "CID" ,1中是什么意思
- 在C++中使用 Catch 测试框架编译错误"error: expected ';' at end of declaration list"
- CMake 用于设定C++标准的设施 "at least C++NN"
- SIGSEGV on Boost UDP 套接字关闭 - tcache_get at malloc.c.
- 使用 mat.at<uchar>(i,j) 的 opencv C++中的矩阵赋值错误
- CMake Error at modules/videoio/cmake/detect_ffmpeg.cmake:16
- 当键值是 std 向量时,为什么使用 at in C++ 访问映射值如此缓慢?
- 两个垫子的 OpenCV 数据是相同的,但使用 Mat::at 检索时的值已损坏
- 具有文本角色扮演功能的移动系统
- 开发C++/地图中的控制台角色扮演游戏
- 使用 at() 访问 std::map 元素是否比运算符 [] 慢?
- 错误:调用 .. at return 语句时没有匹配函数
- OpenCV 像素访问点与 at() - 不同的值
- 如何在接触时重置我的角色位置?
- 为什么玩家控制器"own"偏航俯仰和滚动,但角色"owns"它的位置?
- C++11 功能 std::map::at 编译旧版本的C++
- AT 命令响应解析器
- 在macOS上使用libcurl库编译一个c++at项目
- 比较s.at(i)与角色