21xrx.com
2024-12-22 20:35:51 Sunday
登录
文章检索 我的文章 写文章
C++如何实现查找字符串出现的次数
2023-07-09 02:14:28 深夜i     --     --
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即可。

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

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复