如何用给定的字符串替换所有出现的字符

时间:2017-11-08 07:36:11

标签: c++ string algorithm

我想用'$'替换所有出现的"$$"。目前我正在使用string::find检查字符串中是否存在'$'。然后我使用for循环并检查每个字符是否与'$'匹配。如果某个字符与$匹配,那么我使用string::replace来替换它。 在c ++中有没有其他有效的方法呢?没有以较低的复杂度遍历整个字符串?

1 个答案:

答案 0 :(得分:0)

我不知道用另一个字符串替换所有出现的某个字符串的标准函数。 replace - 函数将所有出现的特定字符替换为另一个字符,或将单个字符范围替换为另一个范围

所以我认为你无法避免自己迭代字符串。 在您的具体情况下,它可能会更容易,因为您只需要为找到的每个$字符插入额外的$。注意避免无限循环的特殊措施,如果一次又加倍$ - 值就会发生这种情况:

int main() {

    string s = "this $ should be doubled (i.e. $), then. But $$ has been doubled, too.";

    auto it = s.begin();
    while (it != s.end()) {
        if (*it == '$') {
            it = s.insert(it, '$');
            it += 2;
        }
        else {
            it++;
        }
    }
    cout << s;


}