C++程序 实现strpbrk()函数
背景介绍
在C/C++中,strpbrk()函数用于查找一个字符串中的任意字符是否在另一个字符串中出现。其实现方式类似于查找子串函数strstr()。本文将介绍在C++中如何实现一个strpbrk()函数。
函数原型
在介绍如何实现strpbrk()函数之前,我们先介绍一下它的函数原型:
char *strpbrk(const char *str1, const char *str2);
strpbrk()函数接受两个参数:str1和str2。str1表示要查找的字符串,而str2表示要查找的字符集合。如果str2中的任意字符出现在str1中,则返回该字符在str1中的地址,否则返回NULL。
实现思路
根据函数原型,我们可以列出实现思路:
- 在str1中遍历每个字符;
- 和str2中的字符逐个比较,如果相等则返回该字符在str1中的地址;
- 如果遍历完str1仍未找到相等的字符,则返回NULL。
示例代码
根据上述思路,我们可以编写如下的strpbrk()函数:
char* strpbrk(const char* str1, const char* str2)
{
const char *p1, *p2;
for (p1 = str1; *p1 != '\0'; ++p1) {
for (p2 = str2; *p2 != '\0'; ++p2) {
if (*p1 == *p2) {
return (char *) p1;
}
}
}
return NULL;
}
上述函数的遍历采用了两层循环。外层循环遍历str1中的每个字符,内层循环则遍历str2中的每个字符。如果找到符合条件的字符,则返回该字符在str1中的地址,否则返回NULL。
测试代码
为了测试strpbrk()函数的正确性,我们可以编写如下的测试代码:
#include <iostream>
using namespace std;
int main()
{
const char *str1 = "hello,world";
const char *str2 = "abdei";
char *result = strpbrk(str1, str2);
if (result == NULL) {
cout << "No matching character found." << endl;
} else {
cout << "Matching character found: " << *result << endl;
}
return 0;
}
上述测试代码中,我们给str1和str2分别赋了两个字符串,然后调用strpbrk()函数查找是否有str2中的任意字符在str1中出现。如果找到符合条件的字符,则输出该字符;否则输出“未找到匹配的字符”。
结论
综上所述,我们介绍了在C++中如何实现一个strpbrk()函数。通过上述代码实现,你可以快速地编写一个字符串查找函数,用于查找某一个字符串中是否包含特定字符集合中的任意字符。