C++中string替换所有指定字符串的方法

 更新时间:2020年05月14日 09:34:03   作者:IT技术博客大学习  
这篇文章主要介绍了C++中string替换所有指定字符串的实例代码,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

C++的string提供了replace方法来实现字符串的替换,但是对于将字符串中某个字符串全部替换这个功能,string并没有实现,我们今天来做的就是这件事。

首先明白一个概念,即string替换所有字符串,将”12212″这个字符串的所有”12″都替换成”21″,结果是什么?

可以是22211,也可以是21221,有时候应用的场景不同,就会希望得到不同的结果,所以这两种答案都做了实现,代码如下:

# include
# include
using namespace std;
string& replace_all(string& str, const string& old_value, const string& new_value)
{
while( true ) {
string::size_type pos(0);
if( (pos=str.find(old_value))!=string::npos )
str.replace(pos,old_value.length(),new_value);
else break ;
}
returnstr;
}
string& replace_all_distinct(string& str, const string& old_value, const string& new_value)
{
for(string::size_type pos(0); pos!=string::npos; pos+=new_value.length()) {
if( (pos=str.find(old_value,pos))!=string::npos )
str.replace(pos,old_value.length(),new_value);
else break ;
}
returnstr;
}
intmain()
{
cout << replace_all(string(“12212″),“12″,“21″) << endl;
cout << replace_all_distinct(string(“12212″),“12″,“21″) << endl;
}
/*

输出如下:

22211

21221

*/

OK,这样的话,任务就完成啦。

ps:下面看下String.replace() 替换字符串中指定的字符

String.replace()  在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串
语法: stringObject.replace(regexp/substr,replacement)
参数:

regexp/substr

必需。规定子字符串或要替换的模式的 RegExp 对象。

请注意,如果该值是一个字符串,则将它作为要检索的直接量文本模式,而不是首先被转换为 RegExp 对象。

replacement 必需。一个字符串值。规定了替换文本或生成替换文本的函数。

说明
字符串 stringObject 的 replace() 方法执行的是查找并替换的操作。它将在 stringObject 中查找与 regexp 相匹配的子字符串,然后用 replacement 来替换这些子串。如果 regexp 具有全局标志 g,那么 replace() 方法将替换所有匹配的子串。否则,它只替换第一个匹配子串。

replacement 可以是字符串,也可以是函数。如果它是字符串,那么每个匹配都将由字符串替换。但是 replacement 中的 $ 字符具有特定的含义。如下表所示,它说明从模式匹配得到的字符串将用于替换。

例子:

1. 无全局标志/g,只替换第一个匹配的返回结果字符串。返回结果:hard good study, day day up

var str="good good study, day day up"
var ling="hard"
str=str.replace(/good/,ling)//返回结果:hard good study, day day up

2. 带全局标志/g,全局替换。返回结果:hard hard study, day day up

var str="good good study, day day up"
var ling="hard"
 
str=str.replace(/good/g,ling)//返回结果:good good study, day day up

3. 不一样的格式:非字符串的参数。因为格式限制,无法用/g 全局模式。只能替换第一个匹配的字符串。

var str="good good study, day day up"
var toRe="good";
var ling="hard";
str=str.replace(toRe,ling)//返回结果:good hard study, day day up

总结

到此这篇关于C++中string替换所有指定字符串的文章就介绍到这了,更多相关c++ string替换字符串内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • C语言实现六边形扫雷游戏的示例代码

    C语言实现六边形扫雷游戏的示例代码

    所谓六边形扫雷,就是没有扫雷模式的消零算法,每一个安全的点都需要单独挖出来,一次显示一个格子,感兴趣的小伙伴可以跟随小编一起了解一下
    2022-12-12
  • C语言中strcmp的实现原型

    C语言中strcmp的实现原型

    这篇文章主要介绍了C语言中strcmp的实现原型的相关资料,这里提供实例帮助大家理解这部分内容,希望能帮助到大家,需要的朋友可以参考下
    2017-08-08
  • C语言中字符串处理函数sscanf的用法

    C语言中字符串处理函数sscanf的用法

    一直对于一些日期字符串中数字的提取比较头疼,现看到 sscanf 对于字符串中的内容提取较方便,本文主要介绍了C语言中字符串处理函数sscanf的用法,具有一定参考价值,感兴趣的可以了解一下
    2023-08-08
  • 浅谈C++高并发场景下读多写少的优化方案

    浅谈C++高并发场景下读多写少的优化方案

    本文主要介绍了浅谈C++高并发场景下读多写少的优化方案,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-01-01
  • VC++实现View内容保存为图片的方法

    VC++实现View内容保存为图片的方法

    这篇文章主要介绍了VC++实现View内容保存为图片的方法,涉及VC++中Bitmap类的save方法相关使用技巧,需要的朋友可以参考下
    2016-08-08
  • Qt简单编程实现UDP通讯

    Qt简单编程实现UDP通讯

    UDP数据报协议是一个面向无连接的传输层报文协议,它简单易用,不存在 TCP协议“粘包”的问题,下面我们就来看看如何使用qt简单实现UDP通讯吧
    2024-04-04
  • 一波二叉树遍历问题的C++解答实例分享

    一波二叉树遍历问题的C++解答实例分享

    这篇文章主要介绍了一波二叉树遍历问题的C++解答实例分享,包括节点打印和转换为镜像等问题的解答,需要的朋友可以参考下
    2016-02-02
  • 基于Matlab实现山脊图的绘制

    基于Matlab实现山脊图的绘制

    这篇文章主要介绍了如何利用Matlab实现山脊图的绘制,文中的示例代码讲解详细,对我们学习Matlab有一定的帮助,需要的可以参考一下
    2022-05-05
  • C语言三子棋一步步实现详程

    C语言三子棋一步步实现详程

    三子棋是一种民间传统游戏,又叫九宫棋、圈圈叉叉、一条龙、井字棋等。将正方形对角线连起来,相对两边依次摆上三个双方棋子,只要将自己的三个棋子走成一条线,对方就算输了,想用c语言做出这个游戏,事实上也是比较简单的,下面通过c语言进行对五子棋的分析
    2022-02-02
  • c++primer:变量和基本类型详解

    c++primer:变量和基本类型详解

    今天小编就为大家分享一篇关于C++Primer中变量和基本类型的文章,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2021-08-08

最新评论