C++ 统计一个字符串中子字符串出现的次数
时间: 2023-09-08 07:11:00 浏览: 264
可以使用 std::string 类中的 find() 函数来查找子字符串出现的位置,然后使用循环统计出现的次数。
下面是一个示例代码:
```c++
#include <iostream>
#include <string>
int main() {
std::string str = "hello world hello";
std::string subStr = "hello";
int count = 0;
size_t pos = str.find(subStr);
while (pos != std::string::npos) {
count++;
pos = str.find(subStr, pos + subStr.length());
}
std::cout << "The substring \"" << subStr << "\" appears " << count << " times in the string \"" << str << "\"." << std::endl;
return 0;
}
```
输出结果为:
```
The substring "hello" appears 2 times in the string "hello world hello".
```
该代码中使用了一个 while 循环来查找子字符串的出现位置,并使用 pos 变量来记录上一次查找结束后的位置,从而避免重复查找。
相关问题
C++查找字符串中子字符串索引的方法如何实现?
C++中查找字符串中子字符串索引的方法可以使用标准库中的string类提供的find()函数来实现。find()函数可以接受一个参数,即要查找的子字符串,返回值是子字符串在原字符串中第一次出现的索引位置。如果未找到,则返回string::npos。
例如,下面的代码可以查找字符串str中子字符串sub的索引位置:
```
#include <iostream>
#include <string>
using namespace std;
int main()
{
string str = "hello world";
string sub = "world";
size_t index = str.find(sub);
if (index != string::npos) {
cout << "子字符串的索引位置为:" << index << endl;
} else {
cout << "未找到子字符串!" << endl;
}
return 0;
}
```
输出结果为:
```
子字符串的索引位置为:6
```
注意,这里使用了size_t类型来保存索引位置,因为它是无符号整数类型,可以用于表示字符串的长度和索引位置。同时,由于find()函数返回string::npos时,它的值是一个大于或等于任何有效索引值的特殊常量,因此可以用它来判断子字符串是否存在于原字符串中。
C++代码:计算字符串中子串出现的次数。要求:用一个子函数subString()实现,参数为指向字符串和要查找的子串的指针,返回次数。
以下是实现该功能的C++代码:
```c++
#include <iostream>
#include <cstring>
using namespace std;
int subString(char* str, char* subStr) {
int count = 0;
int len1 = strlen(str);
int len2 = strlen(subStr);
for (int i = 0; i <= len1 - len2; i++) {
if (strncmp(str + i, subStr, len2) == 0) {
count++;
}
}
return count;
}
int main() {
char str[100], subStr[100];
cout << "请输入字符串:";
cin.getline(str, 100);
cout << "请输入要查找的子串:";
cin.getline(subStr, 100);
int count = subString(str, subStr);
cout << "子串出现的次数为:" << count << endl;
return 0;
}
```
首先定义了一个名为`subString`的子函数,该函数接受两个参数:指向字符串和要查找的子串的指针。函数内部使用`strncmp`函数来比较字符串的子串是否与要查找的子串相等,如果相等,就将计数器加1。最后返回计数器的值。
在主函数中,输入字符串和要查找的子串,调用`subString`函数来计算子串出现的次数,并输出结果。