c++处理string类型的工具和常用方法总结

文章目录

      • 1. 基本使用 `#include <string>`
      • 2. c风格的使用 `#include <cstring>`
      • 3. 字符串流 `#include <sstream>`
      • 4. 类型转化`#include <cctype>`
      • 5. 算法`#include <algorithm>`
      • 6. 正则表达式 `<regex>`

在C++中,处理字符串类型的头文件主要有以下几个:

  1. #include <string>:用于标准的C++字符串类std::string,提供了许多成员函数和操作符来处理字符串。
  2. #include <cstring>:用于C风格字符串处理的库函数,例如strlen, strcpy, strcat等。
  3. #include <sstream>:用于字符串流std::stringstream,可以方便地进行字符串与其他类型之间的转换。
  4. #include <cctype>:用于字符处理的库函数,例如isdigit, isalpha, tolower, toupper等。
  5. #include <algorithm>:虽然不是专门用于字符串处理的,但其中的一些算法如std::find, std::sort等可以用来处理字符串。

下面是每个头文件的简要说明和一些示例:

1. 基本使用 #include <string>

#include <iostream>
#include <string>int main() {std::string str = "Hello, World!";std::cout << str << std::endl;std::cout << "Length: " << str.length() << std::endl;std::cout << "Substring: " << str.substr(0, 5) << std::endl;return 0;
}

2. c风格的使用 #include <cstring>

#include <iostream>
#include <cstring>int main() {const char* str1 = "Hello, ";const char* str2 = "World!";char str3[50];std::strcpy(str3, str1);std::strcat(str3, str2);std::cout << str3 << std::endl;return 0;
}

3. 字符串流 #include <sstream>

#include <iostream>
#include <sstream>int main() {int num = 42;std::stringstream ss;ss << "Number: " << num;std::string str = ss.str();std::cout << str << std::endl;std::string input = "123";int value;std::stringstream(input) >> value;std::cout << "Value: " << value << std::endl;return 0;
}

4. 类型转化#include <cctype>

#include <iostream>
#include <cctype>int main() {char c = 'a';if (std::isalpha(c)) {std::cout << c << " is an alphabet character." << std::endl;}if (std::isdigit('9')) {std::cout << "'9' is a digit." << std::endl;}char upper = std::toupper(c);std::cout << "Uppercase: " << upper << std::endl;return 0;
}

5. 算法#include <algorithm>

#include <iostream>
#include <string>
#include <algorithm>int main() {std::string str = "dcba";std::sort(str.begin(), str.end());std::cout << "Sorted string: " << str << std::endl;return 0;
}

6. 正则表达式 <regex>

在C++中,可以使用标准库中的 <regex> 头文件来进行正则表达式匹配和处理字符串。以下是一些常用的类和函数:

  • std::regex: 表示正则表达式对象。
  • std::smatch: 用于存储匹配结果。
  • std::regex_search: 用于搜索字符串中的正则表达式模式。
  • std::regex_match: 用于匹配整个字符串。
  • std::regex_replace: 用于替换字符串中的匹配模式。
  1. 使用 std::regex_search
#include <iostream>
#include <string>
#include <regex>int main() {std::string text = "The quick brown fox jumps over the lazy dog.";std::regex pattern("quick\\s(brown)\\sfox");std::smatch matches;if (std::regex_search(text, matches, pattern)) {std::cout << "Match found: " << matches[0] << std::endl;if (matches.size() > 1) {std::cout << "Captured group: " << matches[1] << std::endl;}} else {std::cout << "No match found." << std::endl;}return 0;
}
  1. 使用 std::regex_match
cpp
Copy code
#include <iostream>
#include <string>
#include <regex>int main() {std::string text = "123-456-7890";std::regex pattern("\\d{3}-\\d{3}-\\d{4}");if (std::regex_match(text, pattern)) {std::cout << "String matches the pattern." << std::endl;} else {std::cout << "String does not match the pattern." << std::endl;}return 0;
}
  1. 使用 std::regex_replace
cpp
Copy code
#include <iostream>
#include <string>
#include <regex>int main() {std::string text = "My phone number is 123-456-7890.";std::regex pattern("\\d{3}-\\d{3}-\\d{4}");std::string replacement = "***-***-****";std::string result = std::regex_replace(text, pattern, replacement);std::cout << "Original text: " << text << std::endl;std::cout << "Modified text: " << result << std::endl;return 0;
}

说明

  1. std::regex_search:
    • 用于在字符串中搜索匹配的子字符串。
    • 返回 truefalse,并将匹配结果存储在 std::smatch 对象中。
  2. std::regex_match:
    • 用于匹配整个字符串。
    • 仅当整个字符串与正则表达式完全匹配时,返回 true
  3. std::regex_replace:
    • 用于替换字符串中所有匹配的子字符串。
    • 返回一个新的字符串,其中所有匹配的子字符串都被替换为指定的字符串。

通过使用这些正则表达式工具,可以在C++中方便地进行字符串模式匹配和替换操作。
这些头文件和示例展示了如何在C++中处理字符串和字符的不同方法。根据具体需求选择合适的头文件和函数可以大大提高程序的效率和可读性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/24544.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

通州公司代理记账,以专业服务提升企业运营效率

我们为您提供“通州公司代理记账”的全面信息&#xff0c;作为一家专业的代理记账机构&#xff0c;我们的目标是为您的企业提供最优质的服务&#xff0c;帮助您更高效地管理财务。 代理记账是一项重要的商业活动&#xff0c;它不仅可以帮助企业节约时间和成本&#xff0c;而且…

boot整合solr

换了新项目组&#xff0c;技术相对老些&#xff0c;于是用boot框架简单记录下&#xff01; 安装 下载路径&#xff1a;https://solr.apache.org/downloads.html Windows环境 下载solr-8.2.0.zip包并解压缩&#xff0c;以管理员身份打开cmd&#xff0c;执行 solr cmd 命令启…

软考 系统架构设计师系列知识点之杂项集萃(29)

接前一篇文章&#xff1a;软考 系统架构设计师系列知识点之杂项集萃&#xff08;28&#xff09; 第46题 以下描述中&#xff0c;&#xff08; &#xff09;不是嵌入式操作系统的特点。 A. 面向应用&#xff0c;可以进行裁剪和移植 B. 用于特定领域&#xff0c;不需要支持多任…

负反馈放大电路

开环放大倍数&#xff1a;放大电路没有加反馈时的放大倍数A 闭环放大倍数&#xff1a;电路加了反馈信号的放大倍数Af。反馈信号和输出信号的比值称为反馈系数F。 三极管各极电压变化关系 1&#xff0c;三极管的基极和发射极之间是同相关系&#xff0c;当基极电压上升&#x…

【Java】单例设计模式

单例设计模式简介 目录 1.单例设计模式是什么&#xff1f;2.单例设计模式设计方法饿汉式懒汉式 3.单例设计模式的应用任务管理器(仅有一个页面&#xff0c;不可多开)Runtime运行环境 1.单例设计模式是什么&#xff1f; 设计模式 是解决 特定问题的优秀设计方式之一。 单例设计…

怎么把m4a转换成mp3?四种常见的转换方法介绍!

怎么把m4a转换成mp3&#xff1f;在处理m4a音频文件时&#xff0c;我们可能会遇到一系列复杂的问题&#xff0c;首先&#xff0c;考虑到m4a是一种相对较新的音频格式&#xff0c;老旧的设备或软件可能无法准确识别它&#xff0c;这可能导致用户无法在这些设备上播放或编辑m4a文件…

西门子学习笔记10 - MCGS和西门子1200进行通讯设置

1、博图软件的设置 1、修改PLC的ip地址为192.168.1.1 2、打开put&#xff0c;get通讯功能 3、设置通讯变量&#xff0c;可以是M区也可以是DB块的数据 2、MCGSE组态环境设置 1、新建项目&#xff0c;在设备窗口界面进入设备窗口 2、添加设备如下 3、双击进入配置界面 4、添加变…

[线程与网络] 网络编程与通信原理(六):深入理解应用层http与https协议(网络编程与通信原理完结)

&#x1f338;个人主页:https://blog.csdn.net/2301_80050796?spm1000.2115.3001.5343 &#x1f3f5;️热门专栏:&#x1f355; Collection与数据结构 (92平均质量分)https://blog.csdn.net/2301_80050796/category_12621348.html?spm1001.2014.3001.5482 &#x1f9c0;Java …

[Java] Mybatis向Mysql插入主副表JSON数据

&#x1f449;原文阅读 目录 &#x1f449;[原文阅读](https://b1ankc-mov.github.io/posts/mybatisplusmysql/) &#x1f4d8;正文开始创建主表实体类创建子表实体类创建主表Mapper接口创建子表Mapper接口创建控制器类演示JSON数据 &#x1f4d8;正文开始 创建主表实体类 首…

redis7.0.x与mysql8.0.x离线docker镜像制作

目录 概述实践离线资源redismysql 概述 redis与mysql离线镜像安装包制作。如有疑问&#xff0c;详细请参考 docker镜像的导入导出 实践 离线资源 如果懒得弄&#xff0c;直接从此下载&#xff0c;redis链接&#xff0c;mysql链接 redis 先找一台装有 docker 的上网机器。 …

[职场] 美术学就业方向和前景 #经验分享#学习方法

美术学就业方向和前景 2011年国务院学位委员会、教育部颁布了新的《学位授予和人才培养学科目录》&#xff0c;艺术学首次从文学门类中独立出来&#xff0c;成为新的第13个学科门类&#xff0c;即艺术学门类。其中&#xff0c;美术学又是艺术学门类下的五个一级学科之一。但是…

亿发软件:信息化与数字化,相互交织的科技双引擎

在现代科技发展的浪潮中&#xff0c;信息化和数字化是两个频繁被提及的关键词。尽管它们在很多情况下被视为同义词&#xff0c;但其实两者有着本质的区别和相互影响的关系。究竟是信息化推动了数字化&#xff0c;还是数字化引领了信息化的进程&#xff1f;本文将深入探讨信息化…

代码随想录刷题笔记-数组篇

文章目录 代码随想录刷题笔记-数组篇27 移除元素力扣地址题目描述题目实例解题思路代码实现 26. 删除有序数组中的重复项力扣地址题目描述题目示例解题思路代码实现 283. 移动零力扣地址题目描述题目实例解题思路代码实现 代码随想录刷题笔记-数组篇 27 移除元素 力扣地址 h…

数字驱动:企业发展的火箭助推器!

​ 在这个数字经济时代&#xff0c;数据就像火箭燃料&#xff0c;而数字驱动则是那强大的火箭助推器&#xff01;它正以惊人的力量助力企业飞速发展&#xff01; 数字驱动&#xff0c;助力企业发展的超强引擎&#xff01; 用数据说话&#xff0c;决策不再盲目&#xff01; 以数…

Vue CLI 环境变量使用指南

一、简介 Vue CLI 是一个强大的前端工程化工具&#xff0c;它提供了丰富的配置选项&#xff0c;包括环境变量的管理。环境变量允许开发者根据不同的运行环境&#xff08;如开发、测试和生产&#xff09;应用不同的配置&#xff0c;而无需更改代码。本文将详细介绍如何在 Vue C…

redis 03 RDB AOF

1.数据库状态 2.为什么会出现RDB 3.什么是RDB 5.1 5.2 6 6.1 6.2 6.2.1 6.2.2 6.2.3 7 8. 8.1 9 9.1 9.2 9.3 9.4 9.5

心链12-----队伍页业务完善+匹配算法实现随机匹配(最短距离算法)

心链 — 伙伴匹配系统 搜索队伍 我们选择vant组件库里的基础搜索框&#xff0c;复制到TeamPage页面&#xff0c;同时还有查询为空时&#xff0c;显示的无结果页面&#xff08;用户页面以写过&#xff09; 因为&#xff0c;我们一次性挂载本质性也是搜索队伍&#xff0c;所以…

@Validated 前端表单数据校验

1. 整合 1.1 依赖引入 <dependency><groupId>org.hibernate.validator</groupId><artifactId>hibernate-validator</artifactId></dependency>1.2 控制层 /*** 新增胎架计划** param subsectionPlanVo* return*/PostMapping("/sched…

数据结构复习指导之外部排序

目录 外部排序 复习提示 1.外部排序的基本概念 2.外部排序的方法 2.1对大文件排序时使用的排序算法&#xff08;2016&#xff09; 3.多路平衡归并与败者树 4.置换-选择排序&#xff08;生成初始归并段&#xff09; 4.1置换-选择排序生成初始归并段的实例(2023) 5.最佳…

【经验】Ubuntu上离线安装VsCode插件浏览Linux kernel源码

1、下载VsCode离线安装包 1.1 下载 下载地址:https://marketplace.visualstudio.com/vscode 本人安装的插件: C/C++ checkpatch Chinese clangd kconfig Makefile Tools Perl Perl Toolbox注意:C/C++插件要安装Linux 64版本 1.2 安装 将离线安装包拷贝到Ubuntu中,执…