5. 编写一个参数为指针的函数,判断一个字符串在另一个字符串中是否存在,如果存在,则返回该字符串出现的次数;如果不存在,则返回值为0。编写主函数,对其功能测试。
时间: 2024-12-14 07:24:52 浏览: 10
在C++中,你可以编写如下的函数来完成这个任务:
```cpp
#include <iostream>
#include <string>
// 定义函数,接受两个指向字符串的指针作为参数
int findSubstring(const char* str1, const char* str2) {
int count = 0;
while (str1 != nullptr && *str1 != '\0') { // 遍历str1
size_t index = str2.find(*str1); // 查找str2中第一个匹配项
if (index != std::string::npos) { // 如果找到
// 更新位置并检查是否超出边界
str1 += 1; // 移动到下一个字符
str2.erase(0, index + 1); // 移除已匹配部分
count++;
} else {
break; // 没有找到,跳出循环
}
}
return count;
}
int main() {
std::string str1 = "Hello, world!";
std::string substr1 = "world";
std::cout << "Substring '" << substr1 << "' appears " << findSubstring(str1.c_str(), substr1.c_str()) << " times in '"
<< str1 << "'.\n";
// 对其他情况做测试
std::string str2 = "This is a test.";
std::string substr2 = "test";
std::cout << "Substring '" << substr2 << "' appears " << findSubstring(str2.c_str(), substr2.c_str()) << " times in '"
<< str2 << "'.\n";
return 0;
}
```
这个`findSubstring`函数首先遍历`str1`,对于每个字符,它查找`str2`中是否有相同的字符,并计算出现的次数。注意我们使用了`std::string::npos`来表示未找到的情况。
在`main`函数中,我们对一些示例字符串进行了测试。
阅读全文