浅谈C++中replace()方法

 更新时间:2015年11月10日 13:29:10   作者:glp_hit  
C++编程语言中的string应用方式多样化,每一种应用方式都能帮助我们提实现特定的功能需求。在这里我们将会为大家详细介绍一下其中一个比较重要的用法,有关C++ replace()函数的应用方式,需要的朋友可以参考下

本文主要针对c++中常用replace函数用法给出九个样例程序:

用法一: 

/*
 *用str替换指定字符串从起始位置pos开始长度为len的字符 
 *string& replace (size_t pos, size_t len, const string& str); 
 */ 
int main() 
{ 
 string line = "this@ is@ a test string!"; 
 line = line.replace(line.find("@"), 1, ""); //从第一个@位置替换第一个@为空 
 cout << line << endl; 
 return 0; 
} 

运行结果:

用法二: 

/*
 *用str替换 迭代器起始位置 和 结束位置 的字符 
 *string& replace (const_iterator i1, const_iterator i2, const string& str); 
 */ 
int main() 
{ 
 string line = "this@ is@ a test string!"; 
 line = line.replace(line.begin(), line.begin()+6, ""); //用str替换从begin位置开始的6个字符 
 cout << line << endl; 
 return 0; 
} 

运行结果:

用法三: 

/*
 *用substr的指定子串(给定起始位置和长度)替换从指定位置上的字符串 
 *string& replace (size_t pos, size_t len, const string& str, size_t subpos, size_t sublen); 
 */ 
int main() 
{ 
 string line = "this@ is@ a test string!"; 
 string substr = "12345"; 
 line = line.replace(0, 5, substr, substr.find("1"), 3); //用substr的指定子串(从1位置数共3个字符)替换从0到5位置上的line 
 cout << line << endl; 
 return 0; 
} 

运行结果:

用法四:string转char*时编译器可能会报出警告,不建议这样做 

/*
 *用str替换从指定位置0开始长度为5的字符串 
 *string& replace(size_t pos, size_t len, const char* s); 
 */ 
int main() 
{ 
 string line = "this@ is@ a test string!"; 
 char* str = "12345"; 
 line = line.replace(0, 5, str); //用str替换从指定位置0开始长度为5的字符串 
 cout << line << endl; 
 return 0; 
} 


运行结果:

用法五:string转char*时编译器可能会报出警告,不建议这样做 

/*
 *用str替换从指定迭代器位置的字符串 
 *string& replace (const_iterator i1, const_iterator i2, const char* s); 
 */ 
int main() 
{ 
 string line = "this@ is@ a test string!"; 
 char* str = "12345"; 
 line = line.replace(line.begin(), line.begin()+9, str); //用str替换从指定迭代器位置的字符串 
 cout << line << endl; 
 return 0; 
} 

运行结果:

用法六:string转char*时编译器可能会报出警告,不建议这样做 

/*
 *用s的前n个字符替换从开始位置pos长度为len的字符串 
 *string& replace(size_t pos, size_t len, const char* s, size_t n); 
 */ 
int main() 
{ 
 string line = "this@ is@ a test string!"; 
 char* str = "12345"; 
 line = line.replace(0, 9, str, 4); //用str的前4个字符替换从0位置开始长度为9的字符串 
 cout << line << endl; 
 return 0; 
} 

运行结果:

用法七:string转char*时编译器可能会报出警告,不建议这样做 

/*
 *用s的前n个字符替换指定迭代器位置(从i1到i2)的字符串 
 *string& replace (const_iterator i1, const_iterator i2, const char* s, size_t n); 
 */ 
int main() 
{ 
 string line = "this@ is@ a test string!"; 
 char* str = "12345"; 
 line = line.replace(line.begin(), line.begin()+9, str, 4); //用str的前4个字符替换指定迭代器位置的字符串 
 cout << line << endl; 
 return 0; 
} 

运行结果:

用法八: 

/* 

*用重复n次的c字符替换从指定位置pos长度为len的内容 
 *string& replace (size_t pos, size_t len, size_t n, char c); 
 */ 
int main() 
{ 
 string line = "this@ is@ a test string!"; 
 char c = '1'; 
 line = line.replace(0, 9, 3, c); //用重复3次的c字符替换从指定位置0长度为9的内容 
 cout << line << endl; 
 return 0; 
} 

运行结果:

用法九: 

/*
 *用重复n次的c字符替换从指定迭代器位置(从i1开始到结束)的内容 
 *string& replace (const_iterator i1, const_iterator i2, size_t n, char c); 
 */ 
int main() 
{ 
 string line = "this@ is@ a test string!"; 
 char c = '1'; 
 line = line.replace(line.begin(), line.begin()+9, 3, c); //用重复3次的c字符替换从指定迭代器位置的内容 
 cout << line << endl; 
 return 0; 
} 


运行结果:

注:所有使用迭代器类型的参数不限于string类型,可以为vector、list等其他类型迭代器。

相关文章

  • C++实现简单的HTTP服务器

    C++实现简单的HTTP服务器

    这篇文章主要为大家详细介绍了C++实现简单的HTTP服务器的相关资料,感兴趣的朋友可以参考下
    2016-05-05
  • C++简明分析inline函数的使用

    C++简明分析inline函数的使用

    inline是C++关键字,在函数声明或定义中,函数返回类型前加上关键字inline,即可以把函数指定为内联函数。这样可以解决一些频繁调用的函数大量消耗栈空间(栈内存)的问题
    2022-07-07
  • 深入理解c语言数组

    深入理解c语言数组

    这篇文章主要介绍了c语言数组,有需要的朋友可以参考一下
    2013-12-12
  • 利用C语言编辑画图程序的实现方法(推荐)

    利用C语言编辑画图程序的实现方法(推荐)

    下面小编就为大家带来一篇利用C语言编辑画图程序的实现方法(推荐)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-06-06
  • 基于Qt的TCP实现通信

    基于Qt的TCP实现通信

    这篇文章主要为大家详细介绍了基于Qt的TCP实现通信,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-08-08
  • c语言如何设置随机数及逐行解析

    c语言如何设置随机数及逐行解析

    在C语言中,rand()函数可以用来产生随机数,但是这不是真真意义上的随机数,是一个伪随机数,下面这篇文章主要给大家介绍了关于c语言如何设置随机数及逐行解析的相关资料,需要的朋友可以参考下
    2022-11-11
  • C++学习之多态的使用详解

    C++学习之多态的使用详解

    这篇文章主要为大家详细介绍了C++中多态的机制以及使用,文中的示例代码讲解详细,对我们学习C++有一定的帮助,感兴趣的可以了解一下
    2022-06-06
  • c语言中数组名a和&a详细介绍

    c语言中数组名a和&a详细介绍

    其实这两个东西挺难理解的,应该也没有那么重要,了解一下好了,主要还是要多多理解数组指针的运算
    2013-08-08
  • C语言 二级指针详解及示例代码

    C语言 二级指针详解及示例代码

    本文主要介绍C语言 二级指针,这里整理了C语言中二级指针的基础资料并附有示例代码和实现结果,帮助大家学习理解相关知识,有学习的朋友可以参考下
    2016-08-08
  • C语言 完整游戏项目坦克大战详细代码

    C语言 完整游戏项目坦克大战详细代码

    《坦克大战》以二战坦克为题材,既保留了射击类游戏的操作性,也改进了射击类游戏太过于复杂难玩的高门槛特点,集休闲与竞技于一身。经典再度袭来,流畅的画面,疯狂的战斗,让玩家再次进入疯狂坦克的世界。玩家的目标是控制坦克躲避危险,消灭掉所有的敌人即可进入下一关
    2021-11-11

最新评论