检查std :: vector中的字符串是否包含C ++中的子字符串

时间:2016-05-25 13:03:41

标签: c++ string

如果向量中的任何字符串包含子字符串,是否有一种有效的方法来执行函数?

沿着这些方向的东西

if(vector.contains(strstr(currentVectorElement,"substring"))) {
    //do something
}

if(vector.contains(strstr(currentVectorElement,"substring2"))) {
    //do something else
}

我唯一能想到的是迭代每个字符串并检查子字符串是否存在。

2 个答案:

答案 0 :(得分:5)

您可以将std::find_if与lambda表达式

一起使用
if(std::find_if(vec.begin(), vec.end(), [](const std::string& str) { return str.find("substring") != std::string::npos; }) != vec.end()) {
    ...
}

答案 1 :(得分:1)

你需要的是std :: search()

http://en.cppreference.com/w/cpp/algorithm/search