在qt中,除了写入许多str1 == str2 || ...之外,还有另一种比较多个字符串的方法
str1 == str2 || ...
QString a = "red"; QString b = "yellow"; QString c = "blue"; QString d = "green"; QString e = "gray"; if (a == b || a == c || a == d || a == e) { }
balp4ylt1#
一个简单的方法是创建一个包含所有允许的字符串的容器,然后使用它的find函数来查看它是否在容器中。根据你选择的容器,它可能没有自己的find函数。在这种情况下,你仍然可以依赖std::find来简单地查找字符串。下面的示例使用std::set来存储要查找的所有有效字符串,并使用其find成员函数来处理搜索,而不对要忽略的字符串执行任何其他检查。
find
std::find
std::set
#include <set> #include <vector> #include <iostream> int main() { std::set<QString> validLabels{ "yellow", "blue", "green", "gray" }; std::vector<QString> needles{ "red", "yellow", "blue", "green", "gray" }; for (const auto& needle : needles) { if (validLabels.find(needle) != validLabels.end()) { std::cout << "Found " << needle << "\n"; } else { std::cout << "Did not find " << needle << "\n"; } } }
下面的示例使用std::vector存储所有允许的字符串,并使用std::find查找该字符串。
std::vector
#include <vector> #include <algorithm> #include <iostream> int main() { std::vector<QString> validLabels{ "yellow", "blue", "green", "gray" }; std::vector<QString> needles{ "red", "yellow", "blue", "green", "gray" }; for (const auto& needle : needles) { if (std::find(validLabels.begin(), validLabels.end(), needle) != validLabels.end()) { std::cout << "Found " << needle << "\n"; } else { std::cout << "Did not find " << needle << "\n"; } } }
这两个示例都生成以下输出
Did not find red Found yellow Found blue Found green Found gray
1条答案
按热度按时间balp4ylt1#
一个简单的方法是创建一个包含所有允许的字符串的容器,然后使用它的
find
函数来查看它是否在容器中。根据你选择的容器,它可能没有自己的find函数。在这种情况下,你仍然可以依赖std::find
来简单地查找字符串。下面的示例使用
std::set
来存储要查找的所有有效字符串,并使用其find
成员函数来处理搜索,而不对要忽略的字符串执行任何其他检查。下面的示例使用
std::vector
存储所有允许的字符串,并使用std::find
查找该字符串。这两个示例都生成以下输出