На каждом языке, о котором я могу думать, кроме C++, функциональная Замена по существу заменяет все части строки, тогда как строковый класс C++ не поддерживает простые операции как следующее:
string s = "Hello World";
s = s.Replace("Hello", "Goodbye");
echo s; // Prints "Goodbye World"
Это кажется наиболее популярным способом использования любого типа строковой функции замены, но там, кажется, не стандартная функция замены в C++. Я пропускаю что-то здесь?
Править: Я знаю, что нет встроенной функции замены как это в стандартной библиотеке - я задаюсь вопросом, существует ли более или менее стандартная реализация, сделанная из стандартных алгоритмов или чего-то вроде того вида.
Вы ничего не упускаете, этого нет в стандартной библиотеке.
Вы можете написать это самостоятельно, используя find ()
, replace ()
и т. Д., Либо использовать такую реализацию, как replace_all ()
из библиотеки строковых алгоритмов Boosts .
это не совсем то же самое, но есть метод замены:
#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 и небольшой цикл