std :: string :: заменить стандартную реализацию? - PullRequest
6 голосов
/ 13 февраля 2010

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

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

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

РЕДАКТИРОВАТЬ: я знаю, что в стандартной библиотеке нет встроенной функции замены, подобной этой, - мне интересно, есть ли более или менее стандартная реализация, сделанная из стандартных алгоритмов или что-то в этом роде.

Ответы [ 2 ]

9 голосов
/ 13 февраля 2010

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

0 голосов
/ 13 февраля 2010

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...