> Czy istnieje prosty spos�b, �eby podmieni� w tek�cie zawartym w
> sdt::string dowolny fragment na dowolny inny? Coďż˝ a'la MFC-owe
> CString::Replace?
No właśnie ja nie widzę tam odpowiednika. Chodzi mi dokładnie o takie coś:
char *str = {".X..X...X"};
strReplace(str, "X", "YY");
//str teraz ma byc: ".YY..YY...YY"
Może jest jakiś ciekawy myk z kombinacją find/replace, który może to
zastąpić?
ps.
Nie problem takie coś napisać ale wydaje mi się to tak typowe zadanie,
że dziwi mnie brak w stl-u odpowiedniej funkcji/metody. Myślę, że nawet
powinno to być w <algorithm>, bo problem można uogólnić na wiele kontenerów.
> No w�a�nie ja nie widz� tam odpowiednika. Chodzi mi dok�adnie o takie co�:
>
> char *str = {".X..X...X"};
> strReplace(str, "X", "YY");
> //str teraz ma byc: ".YY..YY...YY"
Najpierw pytasz o std::string a teraz pokazujesz tablic� znak�w. Z tablic�
znak�w jest gorzej dlatego �e ona ma okre�lony rozmiar kt�rego nie wolno
przekroczy�. Je�li wynikowy string mia�by by� d�u�szy ni� wielko��
zadeklarowanej tablicy to trzebaby najpierw realokowaďż˝ tablicďż˝. A to
wszystko masz na dzieďż˝ dobry w typie std::string.
#include <string>
#include <iostream>
int main()
{
std::string str = ".X..X...X";
std::string patt = "X";
std::string dest = "YY";
std::string::size_type i = 0;
while( (i = str.find(patt, i)) != std::string::npos )
{
str.replace(i, patt.size(), dest);
i += dest.size();
}
std::cout << str << std::endl;
}