|
|
|
|
Bonjour,
Je cherche à remplacer dans du texte de type string une chaine de caractères à chaque fois que celle-ci est trouvée.
Un exemple pour rendre ça clair : je suis Paul et je poste un message -> tu suis Paul et tu poste un message.
Admirez la conjugaison !
Voilà un essai de fonction :
string remplacement(string chaine, string aRemplacer, string parCa)
{
int pos = chaine.size() - aRemplacer.size();
while(chaine.find(aRemplacer) != string::npos)
{
pos = pos - 1;
if(chaine.find(aRemplacer) != string::npos)
{
ch.replace(pos, aRemplacer.size(), parCa);
pos = chaine.size() - aRemplacer.size();
}
}
return chaine;
}
Mais visiblement, le while est sans fin, et je ne vois pas pourquoi.
Merci d'acance !
Configuration: Linux Fedora Firefox 3.0.1
Je ne comprend pas ton Algo, ensuite, à mon avis, le proto à utiliser est:
string remplacement(string chaine, string aRemplacer, string parCa)
{
int len = aRemplacer.size(),pos;
while((pos=chaine.find(aRemplacer)) != string::npos)
{
ch.replace(pos, len, parCa,perCa.size());
}
return chaine;
} mais je ne suis pas convaincu que tu puisse faire ça ainsi, à mon avis, il faut passer les itérateurs.
Sinon, tu peux aussi concaténé: ch=ch.substr(0,pos)+parCa+ch.substr(pos+len/*,string::npos*/); ou encore avec erase() et insert() Salutation ! avant je croyais, maintenant je suis fixé.Jésus Christ Char Snipeur |
Oups, désolé, mon code amélioré ne fonctionnait pas. Je viens d'essayer avec ta version, le debugueur se fait bavard :
|
Regarde le lien que je t'ai donné, et essai avec une autre fonction. Je suis étonné que ça ne fonctionne pas, car ce site est pas mal et documente bien la STL. Mais bon, les faits sont têtus !
|
Ah oui d'accord, l'idée est bonne (même si c'est barbare !).
|