用另外两个替换角色

Bor*_*ris 0 c++ replace stdstring

我有一个std::string,我该如何替换:字符%%

std::replace( s.begin(), s.end(), ':', '%%' ); 上面的代码不起作用:

错误没有实例匹配争论列表

谢谢!

das*_*ght 8

不幸的是,没有办法:一次性替换所有角色.但是你可以在循环中完成它,如下所示:

string s = "quick:brown:fox:jumps:over:the:lazy:dog";
int i = 0;
for (;;) {
    i = s.find(":", i);
    if (i == string::npos) {
        break;
    }
    s.replace(i, 1, "%%");
}
cout << s << endl;
Run Code Online (Sandbox Code Playgroud)

这个程序打印

quick%%brown%%fox%%jumps%%over%%the%%lazy%%dog
Run Code Online (Sandbox Code Playgroud)

如果你只需要替换第一个冒号,那么就可以单独使用循环体,而不需要环绕它.