существует ли какой-либо алгоритм STL или стандартный способ определения количества вхождений конкретной подстроки в строку? Например, в строке:
'How do you do at ou'
строка "ou" появляется дважды. Я пробовал некоторые алгоритмы STL с предикатами и без них, но я обнаружил, что эти алгоритмы из STL хотят сравнивать компоненты строки, которая в моем случае является char, но не может? сравнить подстроки.
Я придумываю что-то вроде этого:
str - строка
obj - подстрока, которую мы ищем
std::string::size_type count_subs(const std::string& str, const std::string& obj)
{
std::string::const_iterator beg = str.begin();
std::string::const_iterator end = str.end();
std::string::size_type count = 0;
while ((beg + (obj.size() - 1)) != end)
{
std::string tmp(beg, beg + obj.size());
if (tmp == obj)
{
++count;
}
++beg;
}
return count;
}
спасибо.