gpt4 book ai didi

c++ - cpp中的字符串比较

转载 作者:太空宇宙 更新时间:2023-11-04 15:39:29 24 4
gpt4 key购买 nike

我正在尝试比较 cpp 中的字符串,但我遇到了一堆错误,例如
“operator==”不匹配
从 char 到 const char * 的无效转换

我正在实现两个功能:
1) 比较字符串并搜索括号,然后返回一个 bool 值。
2) 比较字符串并搜索算术运算符,然后返回一个 bool 值。

这是我的代码:

bool isBracket(const string b)
{
if(b == ")" || b=="(")
return true;
else
return false;
}

bool isOperator(const string op)
{
string ops= "*+-^/";
for(int i = 0; i < ops.length(); i++)
{
if (op == ops[i])
return true;
else
return false;
}
}

int main()
{
string exp="(a+b)";

for(int i=0; i < exp.size(); i++)
{
cout<<exp[i]<<endl;
if(isBracket(exp[i]))
cout<<"bracket found"<<endl;
if(isOperator(exp[i]))
cout<<"operator found"<<endl;
}
return 0;
}

最佳答案

函数看起来像下面这样

bool isBracket( const string &b )
{
return b.find_first_of( "()" ) != std::string::npos;
}

bool isOperator( const string &op )
{
return op.find_first_of( "*+-^/" ) != std::string::npos;
}

或者,如果您只比较字符串的元素,那么这些函数可能看起来像

#include <cstring>
//...

bool isBracket( char b )
{
const char *brackets = "()";
return std::strchr( brackets, b ) != NULL;

}

bool isOperator( char op )
{
const char *ops = "*+-^/";
return std::strchr( ops, op ) != NULL;
}

甚至喜欢

#include <cstring>
//...

bool isBracket( char b )
{
const char *brackets = "()";
return b != '\0' && std::strchr( brackets, b ) != NULL;

}

bool isOperator( char op )
{
const char *ops = "*+-^/";
return op != '\0' && std::strchr( ops, op ) != NULL;
}

关于c++ - cpp中的字符串比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25957609/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com