string替换所有指定字符串(C++)

2023-11-13

转自:http://www.vimer.cn/2009/11/string%E6%9B%BF%E6%8D%A2%E6%89%80%E6%9C%89%E6%8C%87%E5%AE%9A%E5%AD%97%E7%AC%A6%E4%B8%B2%EF%BC%88c%EF%BC%89.html

 

C++的string提供了replace方法来实现字符串的替换,但是对于将字符串中某个字符串全部替换这个功能,string并没有实现,我们今天来做的就是这件事。
首先明白一个概念,即string替换所有字符串,将"12212"这个字符串的所有"12"都替换成"21",结果是什么?
可以是22211,也可以是21221,有时候应用的场景不同,就会希望得到不同的结果,所以这两种答案都做了实现,代码如下:

#include    < string>    
#include    < iostream>    
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 ;   
    }   
    return    str;   
}   
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 ;   
    }   
    return    str;   
}   
int    main()   
{   
    cout   <<    replace_all(string("12212" ),"12" ,"21" )   <<    endl;   
    cout   <<    replace_all_distinct(string("12212" ),"12" ,"21" )   <<    endl;   
}   
/*
输出如下:   
22211   
21221
*/

OK,这样的话,任务就完成啦。
其实大家可能对本博经常写一些这样的小程序不解,但是我总觉得,一些看起来微不足道的东西,往往在关键的时刻,影响你的效率或者业绩,呵呵,不管怎么说,希望对大家有用啦。

版权所有,转载请注明出处。 http://www.vimer.cn

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

string替换所有指定字符串(C++) 的相关文章

  • MVVM:来自 FileOpenPicker 的图像绑定源

    我将 OnActivated 添加到 app xaml cs 中 它可以正常工作 protected async override void OnActivated IActivatedEventArgs args var continua
  • 为类型列表创建别名并将其作为模板参数传递

    我正在使用可变参数模板来实现访问者模式 template
  • 图片框、双击和单击事件

    我有一个奇怪的问题 我有一个图片框双击事件以及单击事件 问题是即使我双击该控件 也会引发单击事件 如果我禁用单击事件 则双击事件正在工作 这个问题已经在这里讨论过 https stackoverflow com questions 1830
  • 如何在单例类和未命名类之间进行选择?

    我会使用这样的单例 Singleton single Singleton instance single gt do it 我会使用这样的未命名类 single do it 我觉得单例模式除了具有可读的错误消息之外 与未命名的类相比没有任何
  • 在编译输出中添加程序集绑定 (app.config)

    如果我编译应用程序 则会在输出中自动添加程序集绑定 具体的程序集绑定不在app config在 Visual Studio 中但在创建的应用程序配置中 有什么办法可以检查为什么会自动添加程序集绑定吗 选项AutoGenerateBindin
  • 如何在C++中列出Python模块的所有函数名称?

    我有一个 C 程序 我想导入一个 Python 模块并列出该模块中的所有函数名称 我该怎么做 我使用以下代码从模块中获取字典 PyDictObject pDict PyDictObject PyModule GetDict pModule
  • 对象变空似乎是 Hangfire 中的反序列化问题

    Hangfire 似乎无法反序列化我的原始版本Scheduler对象及其所有状态 我正在调用其 Execute 方法BackgroundJob Enqueue 如下所示 Scheduler new FileInFileOut FileIn
  • 向客户端发送状态码 500 时页面未呈现

    我有一个页面 通用处理程序 我想在该页面上向客户端返回状态代码 500 以指示出现问题 我这样做 Response StatusCode 500 Response StatusDescription Internal Server Erro
  • 批量插入,asp.net

    我需要获取与会员相对应的 ID 号列表 在任何给定时间处理的数量可能在 10 到 10 000 之间 我可以毫无问题地收集数据 解析数据并将其加载到 DataTable 或任何内容 C 中 但我想在数据库中执行一些操作 将所有这些数据插入表
  • 如何使用 itextsharp 更改 PDF 公式的按钮图标?

    我目前正在尝试使用 itextsharp 填写预定义的表单 除了添加图像之外 一切正常 这之前已经在 Adob e 的 FDF 工具包中运行过 该工具包已编译为 NET 1 1 这不再适用于 NET 4 0 我改用了 itextsharp
  • 括号内声明的对象的范围

    如果我声明一个这样的对象 void main myclass objectA anotherclass true true 0 即 我通过直接调用后者的构造函数来创建一个 objectA 和另一个对象 anotherclass anothe
  • Qt - 添加超链接到对话框

    有没有办法在 Qt 对话框中添加可点击的超链接 IE 它应该看起来像一个超链接 蓝色文本 当您单击它时 它应该在浏览器中打开该超链接 像这样的东西 Use QLabel setOpenExternalLinks bool 并在标签上设置文本
  • 从 SQL 语句中检索元数据(表名)

    我使用的是 Visual Studio 2008 我创建了一个 Winforms 应用程序 并且尝试从 SQL 语句中提取表名 con new SqlConnection connString String queryString Sele
  • ArrayList 有什么问题?

    最近我问了一个关于 SO 的问题 其中提到了可能使用 c ArrayList 来解决问题 有人评论说使用数组列表不好 我想了解更多有关此的信息 我以前从未听说过关于数组列表的这种说法 有人可以带我了解使用数组列表可能出现的性能问题吗 C n
  • 以编程方式阻止 Vista 桌面搜索 (WORDS) 对映射网络驱动器上的 pst 文件建立索引

    经过几天的多次尝试 我没有找到任何 100 的解决方案来解决这个问题 我的搜寻和调查范围 直接访问注册表 HKLM SOFTWARE Microsoft Windows Search CrawlScopeManager Windows Sy
  • asio::this_coro::executor 的实现是什么

    在协程函数中 我们可以添加auto ex co await asio this coro executor 获取该协程的执行者 但当我想了解它的定义时 我发现了这个 Awaitable type that returns the execu
  • 使用属性和性能

    我正在优化我的代码 我注意到使用属性 甚至自动属性 对执行时间有深远的影响 请参阅下面的示例 Test public void GetterVsField PropertyTest propertyTest new PropertyTest
  • C 中的等效 plpgsql 触发器

    我有一个 PostgreSQL 9 0 服务器 并且在某些表上使用继承 因此我必须通过如下触发器模拟外键 CREATE OR REPLACE FUNCTION othertable before update trigger RETURNS
  • 将“C# 友好类型”名称转换为实际类型:“int” => typeof(int)

    我想得到一个System Type给定一个string指定 原始 类型C 友好名称 基本上与 C 编译器读取 C 源代码时的方式相同 我觉得描述我所追求的最好方式是单元测试的形式 我希望存在一种通用技术 可以使以下所有断言通过 而不是尝试对
  • Web 和 winforms 的 .Net 身份验证

    我有一个为客户端构建的 ASP NET Web 应用程序 它使用默认的 ASP NET 表单身份验证 他们现在请求一个能够 与 Web 应用程序一起工作的桌面 WinForms 应用程序 我已经创建了 Web 服务来访问他们想要从 Web

随机推荐

  • 数字电路与系统学习笔记(戚金清)

    第一章 数字逻辑基础 1 1模拟信号 模拟电路 数字信号 数字电路 连续变化的物理量是模拟量 表示模拟量的信号是模拟信号 字符数量无限 离散变化的物理量是数字量 表示数字量的信号是数字信号 字符数量有限 构成模拟电路的元件是电子管 模拟计算
  • stm32F4修改时钟频率,更换为8MHz晶振

    stm32F4修改时钟的方法和stm32F103修改时钟的方法不大一样 毕竟库都换了嘛 一个F1的库一个F4的库 而且F1的库默认晶振时钟就是8MHz 大多数开发板也用的8MHz时钟 给我们提供了很多的方便 F1的库关于PLL的写法也很直观
  • access_token

    access token是公众号的全局唯一接口调用凭据 公众号调用各接口时都需使用access token 开发者需要进行妥善保存 access token的存储至少要保留512个字符空间 access token的有效期目前为2个小时 需
  • 【Maven】jar包冲突原因与最优解决方案

    Maven jar包冲突原因与最优解决方案 文章目录 前言 jar包冲突原因 依赖传递 冲突原因 jar包冲突解决方案 Maven默认处理策略 排除依赖 版本锁定 maven shade plugin插件 总结 前言 你是否经常遇到这样的报
  • 机械革命Z2如何Ubuntu安装

    机械革命Z2如何Ubuntu安装 准备 一个4G大的U盘下载了Ubuntu系统 1 首先要进入BIOS F2 关闭Security Boot 设置U盘启动第一启动顺序 2 这个时候将选项移动到此处不要按回车 按E 3 此时 进入编辑模式 大
  • 史上最难HelloWorld

    文章目录 Tomcat Servlet 创建一个项目 引入依赖 创建目录 编写代码 打包 部署 验证 优化一下打包和部署 Smart Tomcat Servlet常见的问题 Tomcat Tomcat就是一个HTTP服务器 HTTP协议是前
  • 语音识别-信号处理篇

    我的书 淘宝购买链接 当当购买链接 京东购买链接 连接前端和后端的语音识别 ASR 的关键是给到后端 根据特征判定词 句 系统的特征类型和特征质量 对于传统的语音识别系统常采用MFCC mel frequency ceptral coeff
  • flutter图片点击跳转_Flutter系列之Platform Channel使用详解

    PS 逐渐体会到关键少数原则的重要性 接下来就是付诸实践了 另外科创50ETF明天开始限额销售 可以适当关注或入手一点 前面几篇文章介绍了 Navigator 组件 Flex 布局 图片加载 Widget 生命周期 混合开发等 Flutte
  • Linux基础教程之/dev/null和/dev/zero的区别及其用法

    在Linux操作系统中 dev null和 dev zero是两个相似却又很特殊的文件 特别是在shell脚本开发和系统运维过程中会经常用这两个文件 因此作为Linux系统工程师 必须了解这两个文件的区别和用法 一 dev null的用法
  • 如何设计一个自动化测试框架?一文从4个点带你梳理一个正确的思路

    在进行自动化框架设计之前我们先来看两个问题 什么是自动化框架 设计的时候应该注意什么原则 然后该怎么做 本文会以一个web端的UI自动化测试框架设计为例 什么是自动化测试框架 什么是框架 特指为解决一个开放性问题而设计的具有一定约束性的支撑
  • QDIALOG 窗口级别模态

    这篇文章内容主要来自 QtQuarterly30 里面的 New Ways of Using QDialog 介绍的是使用QDialog open 这个函数是Qt 4 5 引入的 而不是传统的exec 来实现一个窗口级别的模态对话框 所谓模
  • 一键部署容器化版本,助力开发者快速试用WeDataSphere开源大数据平台套件

    一 部署WeDataSphere开源大数据平台的难点 您是否为搭建包含Hadoop Hive Spark等基础计算存储引擎的WeDataSphere 以下简称WDS 开源大数据平台套件而烦恼 是否希望能有一种简单快捷的方式来完成所有组件的部
  • 王道408计算机网络手写笔记 - 第六章 -应用层

    概览 6 1 网络应用模型 C S模型与P2P模型 1 6 2 域名系统DNS 层次域名 2 域名解析 3 6 3 文件传输协议FTP 4 6 34 电子邮件 MIME 5 SMTP POP3 IMAP 6 6 5 万维网WWW HTTP
  • jmeter对百度首页进行压力测试

    第一次测试 准备工作 在测试计划下添加jp gc Stepping Thread Group 阶梯线程组配置如下 该测试一共启动500个线程 每30秒增加10个 全部线程启动后 保持2分钟 然后每1秒停止5个线程 添加HTTP请求 添加查看
  • matlab:快速傅里叶(反)变换 FFT&IFFT

    文章目录 前言 一 傅里叶变换的离散性与周期性 二 MATLAB 实现快速傅里叶变换 FFT DFT 的计算 三 FFT 频谱的对称性 四 FFT 频谱的频率刻度 五 频谱图的绘制 半谱图 全谱图 六 练习 绘制cos信号的频谱图 半谱图
  • vue--富文本插件Quill(二)图片与视频上传

    前言 前言 上文介绍了quill的基础使用 这里主要针对我们不想以图片base64文本格式提交 而是上传服务器获取图片url 以url提交的实现方式以及视频上传的实现 思路 1 隐藏一个input框 使用quill的handler事件实现点
  • 怎么检查PCB layout?!推荐一款避坑神器

    原文来自公众号 工程师看海 公众号私信获取资料 DFM 对于硬件工程师而言 最紧张的时间节点就是发板前夕 画好的PCB要出Gerber文件给工厂 这Gerber文件是一定要仔仔细细检查 以前我一直用CAM350 这种检查纯靠 眼力 简单的板
  • fatal error: zlib.h: No such file or directory #include <zlib.h>

    在新安装的虚拟机Cent OS 7 9中 编译安装git 2 18 0源码时 报错 原因是缺少两个库 解决办法是先安装这两个库再重新编译 root用户下安装zlib和zlib devel yum y install zlib zlib de
  • 小程序开发:Component “路径“ does not have a method “方法名(p)“ to handle event “tap“

    今天在写小程序时 彻底掉坑了 习惯了js传参的写法 就在点击事件名后加了括号直接传 结果报错 WASubContext js t wechat s 1652063927164 v 2 20 1 2 Component pages demo
  • string替换所有指定字符串(C++)

    转自 http www vimer cn 2009 11 string E6 9B BF E6 8D A2 E6 89 80 E6 9C 89 E6 8C 87 E5 AE 9A E5 AD 97 E7 AC A6 E4 B8 B2 EF