是否有任何 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;
}
谢谢你。