c++ - string::replace 在 100% 的时间内无法正常工作?

标签 c++ string replace

我正在尝试用字符串中的“%20”替换每个空格字符,并且我正在考虑使用字符串类的内置替换函数。

目前,我有:

void replaceSpace(string& s)
{
    int len = s.length();
    string str = "%20";
    for(int i = 0; i < len; i++) {
        if(s[i] == ' ') {
            s.replace(i, 1, str);
        }
    }

}  

当我传入字符串“_a_b_c_e_f_g__”时,下划线代表空格,我的输出是“%20a%20b%20c%20e_f_g__”。同样,下划线代表空格。

为什么字符串开头附近的空格被替换,但结尾处的空格没有被替换?

最佳答案

每次替换都使 s 变长,但您没有更新循环条件中使用的 len

关于c++ - string::replace 在 100% 的时间内无法正常工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40014294/

相关文章:

c++ - 给出不精确答案的递归Karatsuba算法

c++ - OpenCV C++ 断言

c++ - Microsoft 中的 C++ 标准库文件流操作是否已瘫痪?

c - 在不使用任何预定义函数的情况下在 C 中进行字符串匹配?

cocoa - 如何将 NSArray 元素连接到 NSString 中?

计算字符串的单词

string - Pandas 系列 str 链接在一起时替换不起作用

c++ - 使用 C++ 计算两个日期的差异

javascript - 如何为 Bloodhound Remote 设置额外的变量?

javascript - 如何用+ 1替换字符串中的数字?