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

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

在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 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。