C/C++字符串查找函数全面解析

清欢
清欢
发布时间:2026-10-13 | 8人浏览过
原创

在C/C++开发中,处理文本和二进制数据时,准确查找指定内容是关键操作。string.h 库提供了多种查找函数,针对字节数组、单字符匹配及子串定位各有侧重。本文将解析这七个核心函数的用法与区别。

常见字符串查找函数清单

C/C++ string.h 库中主要的查找功能如下:

  • memchr:在指定内存块中定位给定字符。
  • strchr:在字符串中定位首次出现的给定字符。
  • strcspn:返回从开始到第一个属于另一字符串字符之间的长度。
  • strrchr:在字符串中定位最后一次出现的给定字符。
  • strpbrk:在字符串中定位另一个字符串中任意字符的首次出现。
  • strspn:返回初始段中完全由指定字符组成的长度。
  • strstr:在一个字符串中定位另一个子串的首次出现。

详细函数说明与使用场景

第1步:使用 memchr 在内存中查找字节

当处理的不是以空字符结尾的字符串,而是原始内存块(如结构体或二进制数据)时,应使用此函数。

const void * memchr ( const void * ptr, int value, size_t num );
void * memchr ( void * ptr, int value, size_t num );
  • 参数:ptr 为待查找的内存指针;value 是要查找的字符值(自动转换为 unsigned char);num 是检查的最大字节数。
  • 结果:返回指向 value 首次匹配的指针;若未找到,返回 NULL。

第2步:使用 strchr 查找字符串首字符

适用于常规 C 字符串,查找某个字符第一次出现的位置。

const char * strchr ( const char * str, int character );
char * strchr ( char * str, int character );
  • 参数:str 是待查字符串;character 是目标字符。
  • 结果:返回指向首次匹配的指针,包含终止符 '\0' 也视为可匹配对象;否则返回 NULL。

第3步:使用 strrchr 反向查找字符

当需要获取文件中最后一个后缀点或路径分隔符时使用。

const char * strrchr ( const char * str, int character );
char * strrchr ( char * str, int character );
  • 参数:同 strchr。
  • 结果:返回指向最后一次匹配元素的指针;未找到则返回 NULL。

第4步:使用 strstr 定位子串位置

这是最常用的字符串搜索函数,用于在母串中找子串。

const char * strstr ( const char * str1, const char * str2 );
char * strstr ( char * str1, const char * str2 );
  • 参数:str1 为母串,str2 为要查找的子串。
  • 结果:返回 str1 中首次匹配 str2 的第一个元素的指针;若 str2 为空,返回 str1;否则返回 NULL。

第5步:利用 strcspn 计算排除集长度

用于计算字符串中包含“非指定字符”的前缀长度。

size_t strcspn ( const char * str1, const char * str2 );
  • 含义:统计 str1 中从开头直到遇到一个属于 str2 的字符为止的长度。

第6步:利用 strspn 计算匹配集长度

与 strcspn 互补,用于验证前缀是否仅由某些字符组成。

size_t strspn ( const char * str1, const char * str2 );
  • 含义:统计 str1 中从开头直到遇到一个不属于 str2 的字符为止的长度。

第7步:使用 strpbrk 并行查找多字符

当需要在字符串中查找一组字符中的任意一个首次出现位置时使用。

const char * strpbrk ( const char * str1, const char * str2 );
char * strpbrk ( char * str1, const char * str2 );
  • 含义:在 str1 中寻找第一个出现在 str2 中的字符,并返回其指针。

以上就是C/C++字符串查找函数全面解析的详细内容,更多关于C++ string库技巧的资料请关注本站其它相关文章!

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表