从vector c ++中查找字符串中的字符/字符串

时间:2013-08-29 12:46:26

标签: c++11 find c++

我有一个字符串向量,我想要计算向量中的所有'Ace'。现在我只能找到一个......

int main()
{
    std::vector<string> vec;
    vec.push_back("Ace of Spades");
    vec.push_back("Ace");
    string value = "Ace";
    int cnt = 0;
    auto iter = find_if(begin(vec), end(vec), [&](const string &str)
    {
        return str.find(value) != str.npos;
    });
    if(iter == end(vec))
        cout << "no found" << endl;
    else 
    {
        cout << *iter << endl;
        cnt++;
        cout << cnt++ << endl;
    }
}

2 个答案:

答案 0 :(得分:9)

您可以使用std::count_if

auto cnt = count_if(begin(vec), 
                    end(vec), 
                    [&](const string& str) {
                      return str.find(value) != std::string::npos;
                    });

请注意,这只会计算包含"Ace"的字符串数,而不会计算向量元素中"Ace"的出现次数。

答案 1 :(得分:1)

如果您只想计算匹配元素的数量,可以使用std::count_if。 如果你还需要对它们做些什么,那么最好忘记标准的库算法并使用范围如下:

int count = 0;
for (const auto& element : vec) {
    if (element.find(value) != std::string::npos) {
        std::cout << element << std::endl;
        ++count;
    }
}
std::cout << count << std::endl;