我如何将 OR 与 if 语句一起使用字符串
How do I use OR with if statements in regards to strings
我想做一个if语句来比较两个字符串,看看它们是否匹配。 所以:
if (TypedAnswerOne == CorrectAnswerOne)
如果正确答案的键入与 CorrectAnswerOne 字符串值中的正确答案完全相同,则代码有效。 完全没有问题。
然而。。。例如,如果输入的答案略有不同,例如一个单词而不是两个单词,则表明答案是错误的。
所以我想知道我如何用字符串做一个"OR"?
所以:
if (TypedAnswerOne == CorrectAnswerOne or "dirtballs" or "Dirt Balls" or "dirt balls")
如何使用字符串在 CPP 中定义"或"?
TY :-(
今天的许多编程语言(C,C++,Swift,C#,Java,JavaScript,PHP(共享C的大括号语法和运算符语法。
- 短路逻辑 OR 的语法是双管道:
||
。 - 非短路逻辑 OR 的语法是单管道:
|
(这也用于按位 OR 操作(。 - 此外,
&&
用于短路逻辑 AND,&
用于非短路逻辑 AND 或按位 AND。 ^
是异或(而不是幂(。
与其他语言一样,C++没有内置功能来允许您将单个左侧值与多个右侧值进行比较,因此您需要重复左侧值。
这样:
if( TypedAnswerOne == "dirtballs" || TypedAnswerOne == "Dirt Balls" || TypedAnswerOne
== "dirt balls" )
C 和C++ 不支持switch
语句中的字符串,这与 Java、C#、Swift 和 PHP 不同
。顺便说一句,您应该使用不区分大小写的字符串比较,而不是自己定义所有可能的值。
您必须在大小写之间定义 OR,而不是在字符串之间定义 OR。因此,例如:
if (x == "dirtbag" || x == "dirt bag")
您可以根据需要拥有任意数量的OR,但它开始变得混乱。发生这种情况时,您可能更喜欢开关情况:
switch(x) {
case "dirtbag" : ...; // do something
case "dirt bag" : ...; // do something
}
如果您愿意使用预先存在的库并且不想处理所有情况(听起来可能有很多!(,您总能找到适合您需求的库,并且可能会在比较之前处理字符串(将其设置为小写,删除空格等(。祝你好运!
对于超过几个可能的值,我倾向于将它们放在容器中并使用算法:
#include <algorithm>
#include <iterator>
#include <array>
#include <string>
#include <iostream>
template <typename T, std::size_t N, typename U>
bool includes(const std::array<T, N>& arr, const U& value)
{
return std::find(std::cbegin(arr), std::cend(arr), value) != std::cend(arr);
}
struct in_tag {} in;
template <typename U>
struct in_op_temporary { const U& value; };
template <typename U>
in_op_temporary<U> operator<(const U& lhs, in_tag rhs) { return {lhs}; }
template <typename U, typename T, std::size_t N>
bool operator>(in_op_temporary<U> lhs, const std::array<T, N> rhs)
{
return includes(rhs, lhs.value);
}
int main()
{
const std::array<std::string, 3> answers {
"dirtballs", "Dirt Balls", "dirt balls"
};
if ("Dirt Balls" <in> answers)
std::cout << "success!" << std::endl;
if (not ("DirtBalls" <in> answers))
std::cout << "success!" << std::endl;
}
住在科里鲁
但是对于这个特定问题,我建议找到一种更通用的方法来解释字符串中的错误。
相关文章:
- 我的简单if-else语句是如何无法访问的代码
- 有一个打印语句的函数是一种糟糕的编程实践吗
- 如何将enable-if与模板参数和参数包一起使用
- 如何将PERF_AMPLE_READ与mmap一起使用
- 如何将两个不同矢量的同一位置的两个元素组合在一起
- 线程,如果else语句,都是错误的上下文切换后,会发生什么
- 为什么是0;C++中的有效语句
- 如何将C++中的库和头与MinGW一起使用
- Insert函数不适用于2 if语句C++
- If语句未被求值C++
- 将 out/in out 参数与 if/switch 的 init 语句一起使用
- 有没有办法在C++将字符串与开关语句一起使用?
- 我如何将 OR 与 if 语句一起使用字符串
- 当返回语句时,逗号运算符、大括号初始化列表和 std::unique_ptr 组合在一起
- 在 switch 语句中将多个案例组合在一起
- 条件语句如何与位的操作员一起使用
- C++:将'this'指针与"get"函数一起使用以替换 cout 语句的可能性
- 如何将用户输入与if语句组合在一起
- 我可以在 IF 语句中将比较链接在一起吗?
- 将 if 语句与指针(BST 树)一起使用时出现分段错误