Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/137.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在数组中存储字符串以在IF语句中使用的可能方法_C++ - Fatal编程技术网

C++ 在数组中存储字符串以在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 <&

我有下面的代码,它会搜索任何没有Q跟在U后面的单词。有没有任何可能的方法我可以把这段代码压缩到只使用一个if语句,但搜索每个组合

        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
    }