我正在尝试创建一个布尔函数,该函数计算字符并在字符为"()*-+"时返回 true
I'm trying to create a bool function that evaluates a char and returns true if char is '(' ')' '*' '-' '+'
我收到警告代码 C682 并且我是编程新手,所以我不确定到底出了什么问题。
bool isOperator(char ch)
{
if (ch == '(' or ')' or '*' or '-' or '+')
{
return true;
}
else
return false;
}
如果字符是其中之一,我希望它返回 true,如果它是其他东西,则返回 false。
or
是 C++ 中的逻辑运算符,因此您需要放置条件运算符:
return ch == '(' or ch == ')' or ch == '*' or ch == '-' or ch == '+');
否则,您将'c'
和其他人评估为始终true
表达式。
有些人可能会看到这个更可读(它不那么重复(:
bool isOperator(char ch)
{
switch( ch ) {
case '(' :
case ')' :
case '*' :
case '-' :
case '+' :
return true;
}
return false;
}
或更C++的方式(虽然它更贵,但在您的情况下 5 种变体不太可能重要(:
bool isOperator(char ch)
{
const std::string_view ops( "()*-+" );
return ops.find( ch ) != std::string_view::npos;
}
或者,您可以将其实现为对数组的搜索。这样,您可以轻松添加和删除运算符。
#include <algorithm>
#include <iterator>
bool isOperator(char op) {
const char operators[] = {'(', ')', '+', '-', '*'};
return std::find(std::begin(operators), std::end(operators), op) != std::end(operators);
}
正确的写法是
if (ch == '(' or ch == ')' or ch == '*' or ch == '+')
除了这里的其他答案外,您还可以使用
std::any_of
:
bool isOperator(char ch)
{
static const std::array arr { '(', ')', '*', '-', '+' };
return std::any_of(arr.begin(), arr.end(), [ch](char const& c) {
return ch == c;
});
}
让我们回顾几件事: 替换 或 与实际操作员 ||在 C++ 中,它等效于 OR。(注意,OR是ISO646标准,可以使用,但取决于偏好(
接下来,我们需要确保为您正在检查的每个字符添加 ch
之后,我们应该有一个更简单的形式:
return (ch == '(') || (ch== ')') || (ch == '*') || (ch == '-') || (ch == '+');
注意:我们也可以通过if/else按照您的方式进行操作
bool is_operator_match = false;
if (ch == '(') || (ch== ')') || (ch == '*') || (ch == '-') || (ch == '+')
{
is_operator_match = true;
}
return is_operator_match;
相关文章:
- 为字符串中每 N 个字符插入空格的函数没有按照我认为的方式工作?
- 使用.find函数在c++中查找字符和另一个字符之间的大小
- 将字符随机转换为大写的函数
- 固有构造函数的字符和访问级别
- constexpr 函数获取常量字符*
- 将字符缓冲区强制转换为函数指针
- 函数签名与调用的函数不匹配,常量字符[]和字符*之间的区别?
- 将字符串数组传递给接受常量字符**的函数
- 在函数中返回无符号字符数组,但不返回指针
- 如何返回实际值(在我的例子中是无符号字符数组)而不是来自 C++ 函数的指针?
- 在函数 strcpy() 中访问字符数组时出现分段错误
- 如何循环访问 cpp 中的函数返回的字符指针数组
- 自定义 std::fstream,std::filebuf 的溢出和下溢函数未为每个字符调用
- 如何在字符函数中选择某些字符?
- 使用排序函数 c++ 对字符数组进行排序
- 字符串到字符* 函数
- 空间字符函数
- 在字符函数中传递字符值时出现奇怪的错误
- 正在更新字符* 函数C++
- 反转字符函数,但不会输出