在C ++中进行部分字符串搜索

时间:2015-04-05 20:19:45

标签: c++

让我们说我有一个名为info的字符串向量,它可以逐个从文件中读取网站的名称。

这就是我所搜索的名称,只有完整的名称:

int linearSearch(vector <string> inputs, string search_key){
    for (int x=0; x<inputs.size(); x++){

        if (search_key==inputs[x]){

            return x;
        }
    }
    return -1;
}

现在如果我想计算其中包含特定字词的网站数量该怎么办?

所以,如果我有

  1. apple.com
  2. mac.com
  3. macapple.com
  4. applepie.com
  5. potato.com
  6. 我搜索了&#34; apple&#34;,它将返回3.

1 个答案:

答案 0 :(得分:1)

您可以使用string::find执行字符串的部分搜索,并将值存储到size_t变量中。

将其与std::string::npos进行比较,如果它们不相等则增加计数。

这是一个使用数组而不是矢量的简单示例,因此您可以根据需要学习和修改。

int main() {

    string inputs[2] = {"stack overflow", "stack exchange"};
    string search_key = "stack";
    int count;

    for(int i = 0; i <sizeof(inputs)/sizeof(inputs[0]); i++)
    {
        //npos returns -1. If substring is not found, find will return -1.
        //if substring is found, condition fails and count is incremented 
        if (inputs[i].find(search_key) != string::npos)
            count++;
    }

    cout << count;

    return 0;
}

Here是上述代码的链接。您可以看到输出为预期的2,因为单词stackinputs数组中出现两次。