为了账号安全,请及时绑定邮箱和手机立即绑定

如何替换字符串中出现的所有字符?

如何替换字符串中出现的所有字符?

C++
慕莱坞森 2019-07-01 16:28:18
如何替换字符串中出现的所有字符?中的其他字符替换所有出现的字符的有效方法是什么?std::string?
查看完整描述

3 回答

?
眼眸繁星

TA贡献1873条经验 获得超9个赞

问题集中在character替换,但是,正如我发现这个页面非常有用(特别是康拉德),我想分享一下这个更广义的实现,它允许处理substrings此外:

std::string ReplaceAll(std::string str, const std::string& from, const std::string& to) {
    size_t start_pos = 0;
    while((start_pos = str.find(from, start_pos)) != std::string::npos) {
        str.replace(start_pos, from.length(), to);
        start_pos += to.length(); // Handles case where 'to' is a substring of 'from'
    }
    return str;}

用法:

std::cout << ReplaceAll(string("Number Of Beans"), std::string(" "), std::string("_")) << std::endl;std::cout << ReplaceAll(string("ghghjghugtghty"), std::string("gh"), std::string("X")) << std::endl;std::cout << ReplaceAll(string("ghghjghugtghty"), std::string("gh"), std::string("h")) << std::endl;

产出:

豆子数

xjxxgtXty

赫赫加斯蒂


编辑:

以上内容可以更合适的方式实现,如果您需要考虑性能,请不要返回任何内容(void)并直接在字符串上执行更改str作为论据,通过按地址而不是按价值计算..这将避免无用和昂贵的原始字符串副本,同时返回结果。你说了算那.。

代码:

static inline void ReplaceAll2(std::string &str, const std::string& from, const std::string& to){
    // Same inner code...
    // No return statement}

希望这对其他人有帮助.。


查看完整回答
反对 回复 2019-07-01
  • 3 回答
  • 0 关注
  • 1220 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信