让我们说我有一个名为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;
}
现在如果我想计算其中包含特定字词的网站数量该怎么办?
所以,如果我有
我搜索了&#34; apple&#34;,它将返回3.
答案 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,因为单词stack
在inputs
数组中出现两次。