2010-02-13 18 views
6

w każdym języku, że mogę myśleć, z wyjątkiem C++, funkcja Replace zasadniczo zastępuje wszystkie kawałki łańcucha, natomiast C++ 's klasa ciąg nie obsługuje proste czynności jak następuje:std :: string :: zastąpienie standardowej implementacji?

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

Wydaje najczęstszą użycie dowolnego typu funkcji zamiany ciągów znaków, ale w C++ nie ma standardowej funkcji zamiany. Czy coś mi umyka?

EDYCJA: Jestem świadomy, że nie ma wbudowanej funkcji wymiany w bibliotece standardowej - zastanawiam się, czy istnieje mniej lub bardziej standardowa implementacja wykonana ze standardowych algorytmów lub coś w tym rodzaju.

+0

zawsze miałem ta sama skarga. Nie sądzę, że istnieje jakieś rozwiązanie w STL, z wyjątkiem użycia find w połączeniu z replace. – Dave

Odpowiedz

9

Niczego nie brakuje, nie znajduje się w standardowej bibliotece.
Możesz napisać to samodzielnie, używając find(), replace() itp. Lub użyć implementacji takiej jak replace_all() z Boosts string algorithm library.

0

nie jest to dokładnie to samo, ale nie jest to metoda wymienić:

#include <iostream> 
#include <string> 

using namespace std; 

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

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

     cout << s << endl; 

     return 0; 
} 

można łatwo napisać zastępstwo za pomocą ciąg :: znaleźć, string :: zastąpić i trochę pętla

Powiązane problemy