C++程序 实现strpbrk()函数

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。

实现思路

根据函数原型,我们可以列出实现思路:

  1. 在str1中遍历每个字符;
  2. 和str2中的字符逐个比较,如果相等则返回该字符在str1中的地址;
  3. 如果遍历完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()函数。通过上述代码实现,你可以快速地编写一个字符串查找函数,用于查找某一个字符串中是否包含特定字符集合中的任意字符。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程

C++ 示例