c++ 字符串替换replace函数

      由于c++中的replace函数只能替换一次字符串中的字符/子串,所有需要通过循环遍历方式,多次替换。根据循环方法不同,分为以下几个方法:

方法1:通过size_type pos 指针 加上简单的while(true)循环进行遍历

string::size_type pos(0);

while (true)
{

pos = modi_reason.find(“ ”);

if( pos != string::npos )

{

modi_reason.replace(pos , 1 , “” );

}

else

{

    break;

}

}

方法2,(同方法1)

while(true)

{

        string::iterator p = find( old_string.begin(), old_string.end(), 'new_char' );

        if ( p!= old_string.end() )

        {

           old_string.replace( p , old_sub_string.length() ,  new_sub_string )

        }

}

方法3:通过size_type pos 指针进行遍历

string& replace_all(string& src, const string& old_value, const string& new_value) {
    // 每次重新定位起始位置pos += new_value.length(),

    //并重新从新的起始位置pos进行find , src.find(old_value, pos)

    //防止上轮替换后的字符串形成新的old_value
    for (string::size_type pos(0); pos != string::npos; pos += new_value.length()) {
        if ((pos = src.find(old_value, pos)) != string::npos) {
            src.replace(pos, old_value.length(), new_value);
        }
        else break;   //已经找不到需要替换的字符串了,break掉。
    }
    return src;
}

方法4:通过迭代器进行遍历(适用于单个字符的替换)

string::iterator  itor = old_string.begin();

for( ; itor !=  old_string.end(); itor++)

{

     if(strcmp( (*itor).c_str() , old_char ) ==0 )

    {

         old_string.replace( itor ,  1 ,  new_char );

    }

}


 

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值