21xrx.com
2025-03-22 00:32:19 Saturday
文章检索 我的文章 写文章
C++如何实现查找字符串出现的次数
2023-07-09 02:14:28 深夜i     27     0
C++ 字符串 查找 出现次数

C++作为一种编程语言,拥有强大的字符串处理能力,可以很容易地实现查找字符串出现的次数。下面我们将介绍C++中的两种方法来实现这个功能。

第一种方法是使用string类自带的find函数。这个函数可以在一个字符串中查找另一个字符串,并返回第一个字符串中第一次出现该字符串的位置。结合循环可以不断查找,来实现计数的功能。

下面是代码示例:

#include <iostream>
#include <string>
using namespace std;
int main()
{
  string s = "hello world, hello c++";
  string target = "hello";
  int count = 0;
  int pos = 0;
  while (pos < s.size())
  {
    int next_pos = s.find(target, pos);//查找下一个目标字符串的位置
    if (next_pos != string::npos)//如果找到了
    {
      count++;
      pos = next_pos + target.size();//从下一个位置开始查找
    }
    else
    结束循环
    
  }
  cout << "total count: " << count << endl;
  return 0;
}

上面的程序中,我们首先定义了一个原字符串s和目标字符串target,然后使用循环在原字符串中查找目标字符串。每找到一个目标字符串,我们就将计数器加1,然后从下一个位置继续查找。

第二种方法是使用正则表达式。正则表达式是一种用于匹配字符串的语法,可以非常方便地实现字符串的查找和替换。在C++中,我们可以使用regex库来支持正则表达式。

下面是代码示例:

#include <iostream>
#include <string>
#include <regex>
using namespace std;
int main()
{
  string s = "hello world, hello c++";
  string target = "hello";
  int count = 0;  
  regex reg(target);//定义正则表达式
  auto iter = sregex_iterator(s.begin(), s.end(), reg);
  auto end = sregex_iterator();//定义迭代器
  while (iter != end)
  {
    count++;
    iter++;
  }
  cout << "total count: " << count << endl;
  return 0;
}

上面的程序中,我们首先定义了一个原字符串s和目标字符串target,然后使用regex库中的regex类定义了一个正则表达式。接着,我们使用sregex_iterator类来实现对原字符串中目标字符串的查找,并将找到的位置保存在迭代器中。最后,我们在循环中遍历迭代器,每找到一个目标字符串,就将计数器加1即可。

以上两种方法都可以很容易地实现查找字符串出现次数的功能。具体使用哪种方法,可以根据实际需要和场景来选择。

  
  

评论区