C++ 在数组中存储字符串以在IF语句中使用的可能方法
我有下面的代码,它会搜索任何没有Q跟在U后面的单词。有没有任何可能的方法我可以把这段代码压缩到只使用一个if语句,但搜索每个组合C++ 在数组中存储字符串以在IF语句中使用的可能方法,c++,C++,我有下面的代码,它会搜索任何没有Q跟在U后面的单词。有没有任何可能的方法我可以把这段代码压缩到只使用一个if语句,但搜索每个组合 if (word1.find("qq") != std::string::npos) { cout << word1 << endl; } if (word1.find("qa") != std::string::npos) { cout <&
if (word1.find("qq") != std::string::npos) {
cout << word1 << endl;
}
if (word1.find("qa") != std::string::npos) {
cout << word1 << endl;
}
//...
if(word1.find(“qq”)!=std::string::npos){
我认为它的局限性在于它不会抓住“库卡”
if (word1.find('q') != std::string::npos
&& word1.find("qu") == std::string::npos)
cout << word1 << endl;
我会将所有搜索字符串存储在一个容器中,然后在其上循环:
#include <vector>
#include <iostream>
int main(int, char**) {
std::string word1 = "this is the string to search";
std::vector<std::string> patterns;
patterns.push_back("qq");
patterns.push_back("qa");
// etc.
std::vector<std::string>::size_type i; // for better readability
for (i = 0; i < patterns.size(); i++) {
if (word1.find(patterns[i]) != std::string::npos) {
std::cout << word1 << std::endl;
}
}
}
#包括
#包括
int main(int,char**){
std::string word1=“这是要搜索的字符串”;
std::向量模式;
模式。推回(“qq”);
模式。推回(“qa”);
//等等。
std::vector::size_type i;//为了更好的可读性
对于(i=0;i
const char *string_list[] = {
"qq",
"qa",
"qz",
...
};
for (int i = 0; i < sizeof(string_list)/sizeof(*string_list); i++) {
if (word1.find(string_list[i]) != std::string::npos) {
cout << word1 << endl
}
const char*string_list[]={
“qq”,
“质量保证”,
“qz”,
...
};
对于(int i=0;i 难道整个文档都是小写的atm。这些精确的组合?或者除了qu
?(您可能需要特殊的组合;它们有很多)。如果您坚持使用正确的大小类型,那么为了可读性,我建议将std::vector::size_type I
的声明置于循环之外,然后只为(I=0;I)编写
const char *string_list[] = {
"qq",
"qa",
"qz",
...
};
for (int i = 0; i < sizeof(string_list)/sizeof(*string_list); i++) {
if (word1.find(string_list[i]) != std::string::npos) {
cout << word1 << endl
}