Std::string:: заменить стандартную реализацию?

В каждом языке, о котором я могу думать, кроме С++, функция Replace существенно заменяет все части строки, тогда как класс строк С++ не поддерживает простые операции, такие как:

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

Это кажется наиболее распространенным использованием любого типа функции замены строк, но в С++ нет стандартной функции замены. Я что-то пропустил?

EDIT: Я знаю, что в стандартной библиотеке нет встроенной функции замены, подобной этой, - мне интересно, есть ли более или менее стандартная реализация, сделанная из стандартных алгоритмов или что-то в этом роде.

Ответ 1

Вам ничего не хватает, его нет в стандартной библиотеке.
Вы можете сами написать, используя find(), replace() и т.д., Или использовать реализацию, такую ​​как replace_all() из Boosts библиотека алгоритмов строк.

Ответ 2

это не совсем то же самое, но есть способ замены:

#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 и little loop