станд.:: строка:: заменить стандартную реализацию?

На каждом языке, о котором я могу думать, кроме C++, функциональная Замена по существу заменяет все части строки, тогда как строковый класс C++ не поддерживает простые операции как следующее:

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

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

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

6
задан Billy ONeal 13 February 2010 в 01:25
поделиться

2 ответа

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

9
ответ дан 10 December 2019 в 02:47
поделиться

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

#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 и небольшой цикл

0
ответ дан 10 December 2019 в 02:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: