Jakiś czas temu (w początkach nauki C++) potrzebowałem zwykły "znajdź i zamień" na std::string
i wykombinowałem coś takiego (już nie pamiętam, czy takiego gotowca pobrałem, czy poskładałem sam):
void StringReplace(string &str, const string &oldStr, const string &newStr)
{
size_t pos = 0;
while((pos = str.find(oldStr, pos)) != std::string::npos)
{
str.replace(pos, oldStr.length(), newStr);
pos += newStr.length();
}
}
str
- obrabiany tekst (jest modyfikowany).
oldStr
- wyszukiwany napis.
newStr
- napis zastępujący każde wystąpienie wyszukanego.
string SomeText = "Jakis napis ze slowami plus i minus, w ktorym minus zastepujemy znakiem -, a plus zastepujemy znakiem +.";
StringReplace(SomeText, "plus", "+");
StringReplace(SomeText, "minus", "-");
cout << SomeText << endl;