Home » U++ Library support » U++ Core » no String::Replace() ?
Re: no String::Replace() ? [message #29215 is a reply to message #29210] |
Mon, 11 October 2010 10:11 |
|
luzr wrote on Sun, 10 October 2010 20:01 | OK, based on public request, I started inspired with Koldo's code and here is what I have added to String:
template <class B>
void AString<B>::Replace(const tchar *find, int findlen, const tchar *replace, int replacelen)
{
String r;
int i = 0;
const tchar *p = Begin();
for(;;) {
int j = Find(findlen, find, i);
if(j < 0)
break;
r.Cat(p + i, j - i);
r.Cat(replace, replacelen);
i = j + findlen;
}
r.Cat(p + i, GetCount() - i);
*this = r;
}
Please check the algo...
There are also
void Replace(const String& find, const String& replace) { Replace(~find, find.GetCount(), ~replace, replace.GetCount()); }
void Replace(const tchar *find, const tchar *replace) { Replace(find, strlen(find), replace, strlen(replace)); }
|
Hi Mirek,
It fails to compile for me (Linux + GCC or Clang). It complains that Begin() and GetCount() are undefined names. It should be template <class B>
void AString<B>::Replace(const tchar *find, int findlen, const tchar *replace, int replacelen)
{
String r;
int i = 0;
const tchar *p = B::Begin(); // Added "B::"
for(;;) {
int j = Find(findlen, find, i);
if(j < 0)
break;
r.Cat(p + i, j - i);
r.Cat(replace, replacelen);
i = j + findlen;
}
r.Cat(p + i, B::GetCount() - i); // Added "B::"
*this = r;
}
Honza
|
|
|
|
|
no String::Replace() ?
By: guido on Wed, 29 August 2007 19:44
|
|
|
Re: no String::Replace() ?
By: mirek on Thu, 30 August 2007 16:23
|
|
|
Re: no String::Replace() ?
By: forlano on Sun, 05 April 2009 09:16
|
|
|
Re: no String::Replace() ?
By: mirek on Sun, 05 April 2009 09:45
|
|
|
Re: no String::Replace() ?
By: koldo on Fri, 10 April 2009 17:27
|
|
|
Re: no String::Replace() ?
By: forlano on Fri, 10 April 2009 20:12
|
|
|
Re: no String::Replace() ?
By: tojocky on Sat, 23 May 2009 19:13
|
|
|
Re: no String::Replace() ?
By: alendar on Mon, 08 March 2010 02:18
|
|
|
Re: no String::Replace() ?
By: sevenjay on Thu, 07 October 2010 15:13
|
|
|
Re: no String::Replace() ?
By: mirek on Sun, 10 October 2010 20:01
|
|
|
Re: no String::Replace() ?
By: mdelfede on Mon, 11 October 2010 09:39
|
|
|
Re: no String::Replace() ?
By: zsolt on Sat, 16 October 2010 02:02
|
|
|
Re: no String::Replace() ?
|
|
|
Re: no String::Replace() ?
By: mirek on Mon, 11 October 2010 12:19
|
|
|
Re: no String::Replace() ?
By: zsolt on Sat, 16 October 2010 02:14
|
Goto Forum:
Current Time: Sun Jun 16 14:02:30 CEST 2024
Total time taken to generate the page: 0.01653 seconds
|