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