boost::string_algo详解5——erase相关函数

2024-06-15 03:48

本文主要是介绍boost::string_algo详解5——erase相关函数,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 

erase的主要函数(以及其包括的copy函数)包括: 
erase_range, erase_first, erase_last, erase_nth, erase_head, erase_tail, erase_regex, erase_all, erase_all_regex
[cpp] view plain copy print ?
  1. void test_string_erase()  
  2. {  
  3.     using namespace boost;  
  4.     std::string str = "Hello Dolly, Hello World!";  
  5.   
  6.     std::cout << "#### erase_range ####" << std::endl;  
  7.     {  
  8.         std::string str1 = str;  
  9.         erase_range(str1, make_iterator_range(str1.begin() + 2, str1.end() - 2));  
  10.         std::cout << str1 << std::endl;  
  11.     }  
  12.     std::cout << std::endl;  
  13.   
  14.     std::cout << "#### erase_first and erase_first_copy ####" << std::endl;  
  15.     {  
  16.         std::string str2 = str;  
  17.         erase_first(str2, "Hello");  
  18.         std::cout << str2 << std::endl;  
  19.     }  
  20.     {  
  21.         std::string str2 = str;  
  22.         std::string strc1 = erase_first_copy(str2, "Hello");  
  23.         std::cout << strc1 << std::endl;  
  24.   
  25.         std::string strc2 = "result = ";  
  26.         erase_first_copy(back_inserter(strc2), str, "Hello");  
  27.         std::cout << strc2 << std::endl;  
  28.     }  
  29.     std::cout << std::endl;  
  30.   
  31.     std::cout << "#### erase_last and erase_last_copy ####" << std::endl;  
  32.     {  
  33.         std::string str3 = str;  
  34.         erase_last(str3, "Hello");  
  35.         std::cout << str3 << std::endl;  
  36.     }  
  37.     {  
  38.         std::string str3 = str;  
  39.         std::string strc1 = erase_last_copy(str3, "Hello");  
  40.         std::cout << strc1 << std::endl;  
  41.   
  42.         std::string strc2 = "result = ";  
  43.         erase_last_copy(back_inserter(strc2), str, "Hello");  
  44.         std::cout << strc2 << std::endl;  
  45.     }  
  46.     std::cout << std::endl;  
  47.   
  48.     // 注意nth的索引从0开始.  
  49.     std::cout << "#### erase_nth and erase_nth_copy ####" << std::endl;  
  50.     {  
  51.         std::string str4 = str;  
  52.         erase_nth(str4, "Hello", 1);  
  53.         std::cout << str4 << std::endl;  
  54.     }  
  55.     {  
  56.         std::string str4 = str;  
  57.         std::string strc1 = erase_nth_copy(str4, "Hello", 1);  
  58.         std::cout << strc1 << std::endl;  
  59.   
  60.         std::string strc2 = "result = ";  
  61.         erase_nth_copy(back_inserter(strc2), str, "Hello", 1);  
  62.         std::cout << strc2 << std::endl;  
  63.     }  
  64.     std::cout << std::endl;  
  65.   
  66.     std::cout << "#### erase_all and erase_all_copy ####" << std::endl;  
  67.     {  
  68.         std::string str5 = str;  
  69.         erase_all(str5, "Hello");  
  70.         std::cout << str5 << std::endl;  
  71.     }  
  72.     {  
  73.         std::string str5 = str;  
  74.         std::string strc1 = erase_all_copy(str5, "Hello");  
  75.         std::cout << strc1 << std::endl;  
  76.   
  77.         std::string strc2 = "result = ";  
  78.         erase_all_copy(back_inserter(strc2), str, "Hello");  
  79.         std::cout << strc2 << std::endl;  
  80.     }  
  81.     std::cout << std::endl;  
  82.   
  83.     std::cout << "#### erase_head and erase_head_copy ####" << std::endl;  
  84.     {  
  85.         std::string str6 = str;  
  86.         erase_head(str6, 3);  
  87.         std::cout << str6 << std::endl;  
  88.     }  
  89.     {  
  90.         std::string str6 = str;  
  91.         std::string strc1 = erase_head_copy(str6, 3);  
  92.         std::cout << strc1 << std::endl;  
  93.   
  94.         std::string strc2 = "result = ";  
  95.         erase_head_copy(back_inserter(strc2), str, 3);  
  96.         std::cout << strc2 << std::endl;  
  97.     }  
  98.     std::cout << std::endl;  
  99.   
  100.     std::cout << "#### erase_tail and erase_tail_copy ####" << std::endl;  
  101.     {  
  102.         std::string str6 = str;  
  103.         erase_tail(str6, 3);  
  104.         std::cout << str6 << std::endl;  
  105.     }  
  106.     {  
  107.         std::string str6 = str;  
  108.         std::string strc1 = erase_tail_copy(str6, 3);  
  109.         std::cout << strc1 << std::endl;  
  110.   
  111.         std::string strc2 = "result = ";  
  112.         erase_tail_copy(back_inserter(strc2), str, 3);  
  113.         std::cout << strc2 << std::endl;  
  114.     }  
  115.     std::cout << std::endl;  
  116.   
  117.     std::cout << "#### erase_regex, erase_regex_copy ####" << std::endl;  
  118.     {  
  119.         std::string str6 = str;  
  120.         regex reg("H.*?o");  
  121.   
  122.         erase_regex(str6, reg);  
  123.         std::cout << str6 << std::endl;  
  124.     }  
  125.   
  126.     {  
  127.         std::string str6 = str;  
  128.         regex reg("H.*?o");  
  129.         std::string strc1 = erase_regex_copy(str6, reg);  
  130.         std::cout << strc1 << std::endl;  
  131.   
  132.         std::string strc2 = "result = ";  
  133.         erase_regex_copy(back_inserter(strc2), str, reg);  
  134.         std::cout << strc2 << std::endl;  
  135.     }  
  136.     std::cout << std::endl;  
  137.   
  138.     std::cout << "#### erase_all_regex, erase_all_regex_copy ####" << std::endl;  
  139.     {  
  140.         std::string str6 = str;  
  141.         regex reg("H.*?o");  
  142.   
  143.         erase_all_regex(str6, reg);  
  144.         std::cout << str6 << std::endl;  
  145.     }  
  146.     {  
  147.         std::string str6 = str;  
  148.         regex reg("H.*?o");  
  149.         std::string strc1 = erase_all_regex_copy(str6, reg);  
  150.         std::cout << strc1 << std::endl;  
  151.   
  152.         std::string strc2 = "result = ";  
  153.         erase_all_regex_copy(back_inserter(strc2), str, reg);  
  154.         std::cout << strc2 << std::endl;  
  155.     }  
  156.     std::cout << std::endl;  
  157. }  

这篇关于boost::string_algo详解5——erase相关函数的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1062348

相关文章

C#数据结构之字符串(string)详解

《C#数据结构之字符串(string)详解》:本文主要介绍C#数据结构之字符串(string),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录转义字符序列字符串的创建字符串的声明null字符串与空字符串重复单字符字符串的构造字符串的属性和常用方法属性常用方法总结摘

Java中StopWatch的使用示例详解

《Java中StopWatch的使用示例详解》stopWatch是org.springframework.util包下的一个工具类,使用它可直观的输出代码执行耗时,以及执行时间百分比,这篇文章主要介绍... 目录stopWatch 是org.springframework.util 包下的一个工具类,使用它

Java进行文件格式校验的方案详解

《Java进行文件格式校验的方案详解》这篇文章主要为大家详细介绍了Java中进行文件格式校验的相关方案,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录一、背景异常现象原因排查用户的无心之过二、解决方案Magandroidic Number判断主流检测库对比Tika的使用区分zip

Java实现时间与字符串互相转换详解

《Java实现时间与字符串互相转换详解》这篇文章主要为大家详细介绍了Java中实现时间与字符串互相转换的相关方法,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录一、日期格式化为字符串(一)使用预定义格式(二)自定义格式二、字符串解析为日期(一)解析ISO格式字符串(二)解析自定义

springboot security快速使用示例详解

《springbootsecurity快速使用示例详解》:本文主要介绍springbootsecurity快速使用示例,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝... 目录创www.chinasem.cn建spring boot项目生成脚手架配置依赖接口示例代码项目结构启用s

Python中随机休眠技术原理与应用详解

《Python中随机休眠技术原理与应用详解》在编程中,让程序暂停执行特定时间是常见需求,当需要引入不确定性时,随机休眠就成为关键技巧,下面我们就来看看Python中随机休眠技术的具体实现与应用吧... 目录引言一、实现原理与基础方法1.1 核心函数解析1.2 基础实现模板1.3 整数版实现二、典型应用场景2

一文详解SpringBoot响应压缩功能的配置与优化

《一文详解SpringBoot响应压缩功能的配置与优化》SpringBoot的响应压缩功能基于智能协商机制,需同时满足很多条件,本文主要为大家详细介绍了SpringBoot响应压缩功能的配置与优化,需... 目录一、核心工作机制1.1 自动协商触发条件1.2 压缩处理流程二、配置方案详解2.1 基础YAML

Python实现无痛修改第三方库源码的方法详解

《Python实现无痛修改第三方库源码的方法详解》很多时候,我们下载的第三方库是不会有需求不满足的情况,但也有极少的情况,第三方库没有兼顾到需求,本文将介绍几个修改源码的操作,大家可以根据需求进行选择... 目录需求不符合模拟示例 1. 修改源文件2. 继承修改3. 猴子补丁4. 追踪局部变量需求不符合很

java中反射(Reflection)机制举例详解

《java中反射(Reflection)机制举例详解》Java中的反射机制是指Java程序在运行期间可以获取到一个对象的全部信息,:本文主要介绍java中反射(Reflection)机制的相关资料... 目录一、什么是反射?二、反射的用途三、获取Class对象四、Class类型的对象使用场景1五、Class

golang 日志log与logrus示例详解

《golang日志log与logrus示例详解》log是Go语言标准库中一个简单的日志库,本文给大家介绍golang日志log与logrus示例详解,感兴趣的朋友一起看看吧... 目录一、Go 标准库 log 详解1. 功能特点2. 常用函数3. 示例代码4. 优势和局限二、第三方库 logrus 详解1.