std::string::replace标准实现是什么?

7

除了C++之外,我所知道的每种语言中,Replace函数基本上都会替换字符串的所有部分,而C++的string类不支持以下简单操作:

string s = "Hello World";
s = s.Replace("Hello", "Goodbye");
echo s; // Prints "Goodbye World"

这似乎是任何类型的字符串替换函数最常见的用法,但在 C++ 中似乎没有标准的 replace 函数。我是否错过了什么?

编辑:我知道标准库中没有像这样的内置 replace 函数,我想知道是否有更或多或少标准的实现,使用了标准算法之类的东西。


我一直有同样的抱怨。我认为除了将find与replace结合使用,STL中没有其他解决方案。 - Dave
更多解决方案的类似问题:https://dev59.com/TXA75IYBdhLWcg3wOGLS - Daemon
2个回答

10
你没有错过什么,它不在标准库中。
你可以使用find()replace()等方法自己编写,或者使用类似于Boost的replace_all()实现字符串算法库

0

这不完全相同,但有一个替换方法:

#include <iostream>
#include <string>

using namespace std;

int main( void )
{
        string s = "Hello World";

        s.replace(0, 5, "Goodbye");

        cout << s << endl;

        return 0;
}

你可以轻松使用 string::find、string::replace 和一个小循环来编写替换程序


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接