IT技术博客大学习 共学习 共进步
全部 移动开发 后端 数据库 AI 算法 安全 DevOps 前端 设计 开发者

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

Vimer 2009-11-19 14:53:01 累计浏览 4,304 次
本机暂存

    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;

     }

     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,这样的话,任务就完成啦。

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

同分类推荐文章

  1. 对基本有序的序列排序算法 (2026-06-11 17:46:49)
  2. Four Levels Of Customer Understanding (2026-05-22 21:00:00)
  3. 除法的意义 (2026-04-12 20:52:17)

查看更多 算法 文章 →

建议继续学习

  1. 为什么算法这么难? (累计阅读 12,397)
  2. 浅谈MySQL索引背后的数据结构及算法 (累计阅读 11,904)
  3. 加州求职记 (累计阅读 11,562)
  4. 如何学好C++语言 (累计阅读 10,448)
  5. Emacs配置C/C++-mode的代码智能提示和自动补全 (累计阅读 10,411)
  6. colortail,让 tail 命令绚丽起来 (累计阅读 10,258)
  7. 谷歌(Google)2011年校园招聘笔试题 (累计阅读 9,574)
  8. 在C++中实现foreach循环,比for_each更简洁! (累计阅读 9,498)
  9. 几个内存相关面试题(c/c++) (累计阅读 9,443)
  10. 最常被程序员们谎称读过的计算机书籍 (累计阅读 9,157)