新闻详情

新闻详情

首页 / 资讯中心 / 详情

一文带你了解C++中的字符替换方法

发布时间:2026/10/2 14:22:38来源:尧图网络
一文带你了解C++中的字符替换方法
一、单个字符替换1.1 std::replace代码示例12345678#include algorithm// ...std::string str Hello, World!;std::replace(str.begin(), str.end(),o,O);// str 现在为 HellO, WOrld!1.2 使用循环手动替换123456789std::string str Hello, World!;for(char c : str) {if(c o) {c O;}}// str 现在为 HellO, WOrld!1.3 使用正则表达式库例如std::regex_replace12345678#include regex// ...std::string str Hello, World!;std::string result std::regex_replace(str, std::regex(o),O);// result 现在为 HellO, WOrld!二、字符串替换2.1 实用字符串流可以使用 C 的字符串流stringstream来实现字符串的替换。下面是一个例子1234567891011121314151617181920212223#include sstream#include stringstd::string replace(std::string str,conststd::string from,conststd::string to) {std::stringstream ss;size_tstart_pos 0;while((start_pos str.find(from, start_pos)) ! std::string::npos) {ss str.substr(0, start_pos) to;start_pos from.length();str str.substr(start_pos);}ss str;returnss.str();}intmain() {std::string str Hello, World!;std::string from World;std::string to C;std::string result replace(str, from, to);std::cout result std::endl;// 输出Hello, C!return0;}2.2 使用字符数组也可以使用字符数组来实现字符串的替换。下面是一个例子12345678910111213141516171819202122232425262728293031323334#include iostream#include cstringchar* replace(char* str,constchar* from,constchar* to) {size_tstr_len strlen(str);size_tfrom_len strlen(from);size_tto_len strlen(to);size_tnew_len str_len to_len - from_len;char* new_str newchar[new_len 1];char* p1 str;char* p2 new_str;while(*p1) {if(strncmp(p1, from, from_len) 0) {strncpy(p2, to, to_len);p2 to_len;p1 from_len;}else{*p2 *p1;}}*p2 \0;delete[] str;returnnew_str;}intmain() {charstr[] Hello, World!;constchar* from World;constchar* to C;char* result replace(str, from, to);std::cout result std::endl;// 输出Hello, C!delete[] result;return0;}2.3 使用 STL 的算法std::replace下面是使用 STL 的 replace 算法来实现字符串的替换的例子1234567891011121314151617181920#include algorithm#include stringstd::string replace(std::string str,conststd::string from,conststd::string to) {size_tstart_pos 0;while((start_pos str.find(from, start_pos)) ! std::string::npos) {str.replace(start_pos, from.length(), to);start_pos to.length();}returnstr;}intmain() {std::string str Hello, World!;std::string from World;std::string to C;std::string result replace(str, from, to);std::cout result std::endl;// 输出Hello, C!return0;}2.4 使用正则表达式如果要替换字符串中的多个子串或者要进行更复杂的字符串替换操作可以使用正则表达式。下面是使用 C 的正则表达式库 regex 来实现字符串的替换的例子1234567891011121314151617181920212223#include regex#include stringstd::string replace(std::string str,conststd::string pattern,conststd::string to) {std::regex r(pattern);returnstd::regex_replace(str, r, to);}intmain() {std::string str Hello, World!;std::string str Hello, World!;std::string result replace(str,World,C);// 替换所有的 World 为 Cstd::cout result std::endl;// 输出Hello, C!result replace(str,[Ww]orld,C);// 替换所有的 World 或 world 为 Cstd::cout result std::endl;// 输出Hello, C!result replace(str,[a-zA-Z],C);// 替换所有的单词为 Cstd::cout result std::endl;// 输出C, C!result replace(str,\\b\\w\\b,C);// 同上std::cout result std::endl;// 输出C, C!}注意在使用正则表达式时需要在字符串中的正则表达式前面加上 \\三、总结在 C 中可以使用字符串流、字符数组、STL 的算法、正则表达式等方法来实现字符串的替换。根据实际需要可以选择适合的方法来实现字符串的替换。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

3D生成Agent的四大生存支柱:任务理解、工具编排、反馈闭环与知识嵌入 2026/10/2 15:09:34

3D生成Agent的四大生存支柱:任务理解、工具编排、反馈闭环与知识嵌入

1. 这不是又一个“3D生成模型”评测,而是Agent时代下3D大模型的生存逻辑重构“Agent时代来了,3D生成大模型接下来比什么?”——这句话最近在技术圈刷屏,但很多人没听懂它真正的分量。它不是在问“哪个模型出图更逼真”&#xff0c…

阅读更多 →
企业智能体平台落地的五种路径:从工作流到RAG权限治理 2026/10/2 15:09:33

企业智能体平台落地的五种路径:从工作流到RAG权限治理

这两年我接触了不少准备上企业智能体平台的项目,有从协同办公入口切入的,也有自带低代码平台自己改造的。说实话,Demo阶段大家都觉得惊艳,业务部门在演示会上"哇"声一片,可一旦真正连续运行三个月&#xff0…

阅读更多 →
美食推荐系统毕设全解析:SpringBoot+Vue前后端分离实战 2026/10/2 15:09:33

美食推荐系统毕设全解析:SpringBoot+Vue前后端分离实战

1. 项目拆解:为什么这套组合成了毕设“标配” 1.1 一个美食信息推荐系统到底要做什么 看到标题里的“美食信息推荐系统”,很多人第一反应是:这不就是菜谱网站吗?其实没那么简单。这类系统的核心并不是“展示一堆菜”,…

阅读更多 →
osgEarth数字地球加载原理与工程实践 2026/10/2 15:09:26

osgEarth数字地球加载原理与工程实践

1. 数字地球不是“放大版地图”,而是三维空间计算系统的落地实践很多人第一次听说“osgEarth实现数字地球”时,下意识觉得就是把Google Earth换个壳——拖拽缩放、点击跳转、加载卫星图。我刚接触osgEarth那会儿也这么想,直到在某次地质灾害模…

阅读更多 →
量化交易源码包实战:从数据到信号避坑指南 2026/10/2 15:09:13

量化交易源码包实战:从数据到信号避坑指南

简介:压缩包内含72个Python脚本,共44KB,是一套面向量化交易入门与进阶者的源码集合。内容按章节组织,覆盖金融数据处理、技术指标计算(如MA、RSI、布林带)、选股与成长模型、回测逻辑、交易API调用、风险控…

阅读更多 →
Linux进程关系与守护进程:网络服务故障排查的底层逻辑 2026/10/2 15:09:07

Linux进程关系与守护进程:网络服务故障排查的底层逻辑

做Linux运维这些年,我有个习惯,服务器一出现网络服务异常,先不看TCP状态,也不急着抓包,而是先打开终端问自己三个问题:当前服务到底有几个进程在跑?它们之间的父子关系是什么?哪个进…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉