当前位置: 首页 > news >正文

常用字符串处理函数

常用字符串处理函数

    • strcspn
      • 函数原型
      • 参数说明
      • 返回值
      • 使用示例
      • 注意事项
    • strpbrk
      • 函数原型
      • 参数说明
      • 返回值
      • 使用示例
    • strcasecmp
      • 函数原型
      • 参数说明
      • 返回值
      • 使用示例
      • 注意事项

strcspn

strcspn 是一个 C 和 C++ 标准库函数,用于计算一个字符串中不包含任何指定字符的最长前缀的长度。换句话说,它返回的是字符串中第一个出现的任何指定字符的位置(索引),如果没有找到,则返回字符串的长度。

函数原型

size_t strcspn(const char *s1, const char *s2);

参数说明

  • s1:要检查的字符串。
  • s2:包含要查找的字符的字符串。

返回值

  • 返回 s1 中不包含 s2 中任何字符的最长前缀的长度。

使用示例

以下是一个使用 strcspn 的示例程序:

#include <iostream>
#include <cstring>int main() {const char* str1 = "Hello, World!";const char* str2 = " ,!";// 计算 str1 中不包含 str2 中任何字符的最长前缀长度size_t length = strcspn(str1, str2);std::cout << "The length of the initial segment of str1 that does not contain any characters from str2 is: " << length << std::endl;return 0;
}

注意事项

  • strcspn 函数的返回值是 size_t 类型,表示长度。
  • 如果 s2 是空字符串,strcspn 将返回 0,因为不包含任何字符的前缀是空字符串。
  • 如果 s1 是空字符串,strcspn 将返回 0,因为没有字符可供比较。
  • 在使用时要包含头文件 <cstring>(C++)或 <string.h>(C)。

strpbrk 是一个 C 和 C++ 标准库函数,用于查找一个字符串中第一个出现的任何字符在另一个字符串中的位置。换句话说,它返回指向第一个匹配字符的指针,如果没有匹配字符,则返回 nullptr(在 C++ 中)或 NULL(在 C 中)。

strpbrk

函数原型

char* strpbrk(const char *s1, const char *s2);

参数说明

  • s1:要检查的字符串。
  • s2:包含要查找的字符的字符串。

返回值

  • 返回指向 s1 中第一个出现的 s2 中的字符的指针。
  • 如果没有找到任何匹配字符,则返回 nullptr(在 C++ 中)或 NULL(在 C 中)。

使用示例

以下是一个使用 strpbrk 的示例程序:

#include <iostream>
#include <cstring>int main() {const char* str1 = "Hello, World!";const char* str2 = "aeiou"; // 要查找的字符集// 查找 str1 中第一个出现的 str2 中的字符char* result = strpbrk(str1, str2); //字符e索引为1if (result) {std::cout << "The first vowel in str1 is: " << *result <<" at position: " << (result - str1) << std::endl; // 1} else {std::cout << "No vowels found in str1." << std::endl;}return 0;
}

strcasecmp 是一个 C 和 C++ 标准库函数,用于比较两个字符串,而不区分大小写。它的功能与 strcmp 类似,但在比较时会忽略字符的大小写差异。

strcasecmp

函数原型

int strcasecmp(const char *s1, const char *s2);

参数说明

  • s1:第一个字符串。
  • s2:第二个字符串。

返回值

  • 如果两个字符串相等(忽略大小写),则返回 0。
  • 如果 s1 小于 s2,则返回一个小于 0 的值。
  • 如果 s1 大于 s2,则返回一个大于 0 的值。

使用示例

以下是一个使用 strcasecmp 的示例程序:

#include <iostream>
#include <cstring>int main() {const char* str1 = "Hello, World!";const char* str2 = "hello, world!";const char* str3 = "Goodbye, World!";// 比较字符串int result1 = strcasecmp(str1, str2); //str1 and str2 相等int result2 = strcasecmp(str1, str3); //"str1 and str3 不相等if (result1 == 0) {std::cout << "str1 and str2 are equal (case-insensitive)." << std::endl;} else {std::cout << "str1 and str2 are not equal (case-insensitive)." << std::endl;}if (result2 == 0) {std::cout << "str1 and str3 are equal (case-insensitive)." << std::endl;} else {std::cout << "str1 and str3 are not equal (case-insensitive)." << std::endl;}return 0;
}

注意事项

  • strcasecmp 是 POSIX 标准的一部分,因此在某些平台(如 Windows)上可能不被支持。在这些平台上,您可能需要使用 _stricmp 函数。
  • strcasecmp 的实现可能会受到当前区域设置的影响,因此在某些情况下,比较的结果可能会有所不同。
http://www.lryc.cn/news/518874.html

相关文章:

  • Pathview包:整合表达谱数据可视化KEGG通路
  • seleniun 自动化程序,python编程 我监控 chrome debug数据后 ,怎么获取控制台的信息呢
  • SQL中的数据库对象
  • DeepSeek:性能强劲的开源模型
  • 医疗可视化大屏 UI 设计新风向
  • 从企业级 RAG 到 AI Assistant , Elasticsearch AI 搜索技术实践
  • TypeScript语言的并发编程
  • benchANT 性能榜单技术解读 Part 1:写入吞吐
  • 虚拟机防火墙管理
  • Nginx反向代理请求头有下划线_导致丢失问题处理
  • 【STM32+CubeMX】 新建一个工程(STM32F407)
  • 机器人避障不再“智障”:HEIGHT——拥挤复杂环境下机器人导航的新架构
  • H2数据库在单元测试中的应用
  • 部署HugeGraph
  • 2025年第三届“华数杯”国际赛A题解题思路与代码(Matlab版)
  • 嵌入式基础 -- IMX8MP的 GPC 模块技术
  • 选择器css
  • 全方位解读消息队列:原理、优势、实例与实践要点
  • JavaScript运算符与控制结构
  • 2030年中国AI人才缺口或达400万,近屿智能助力AI人才储备增长
  • 如何设计一个注册中心?以Zookeeper为例
  • ubuntu 20.04 安装docker--小白学习之路
  • 【大厂面试AI算法题中的知识点】方向涉及:ML/DL/CV/NLP/大数据...本篇介绍 密集行人检测的遮挡问题怎么解决?
  • Tableau数据可视化与仪表盘搭建-可视化原则及BI仪表盘搭建
  • TensorFlow Quantum快速编程(基本篇)
  • ELK日志分析实战宝典之ElasticSearch从入门到服务器部署与应用
  • git 转移文件夹
  • C#,图论与图算法,输出无向图“欧拉路径”的弗勒里(Fleury Algorithm)算法和源程序
  • 计算机网络之---OSI七层模型
  • mysql的mvcc理解