1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57
| #include <string>
#include <iostream>
using namespace std;
/* Cette fonction remplace dans une chaîne de caractères, toutes les occurrences d'une expression par une autre */
string str_replace(string to_replace, string replace_by, string replace_in)
{
int i_pos;
string text_left;
string text_right;
string str_result="";
/*
Tant qu'il reste des occurrences du texte à remplacer dans la chaîne, on :
. récupère le texte avant la première occurrence
. récupère le texte après la première occurrence
. crée la nouvelle chaîne en concaténant le "texte d'avant", le texte de remplacement et le "texte d'après"
. recommence avec la nouvelle chaîne
*/
i_pos = replace_in.find(to_replace); // Position de la premiere occurrence du texte à remplacer, dans la chaine
if(i_pos == -1 || i_pos == string::npos)
{
str_result = replace_in;
}
else
{
while(i_pos != -1 && i_pos != string::npos)
{
text_left = replace_in.substr(0, i_pos);
text_right = replace_in.substr((i_pos + to_replace.size()), (replace_in.size() - (i_pos + to_replace.size())));
replace_in = text_right;
i_pos = replace_in.find(to_replace);
str_result = str_result + text_left + replace_by;
}
str_result += text_right;
}
return str_result;
}
/* Cette fonction remplace, dans une chaîne de caractères, toutes les occurrences d'un caractère par un autre */
string str_replace(char to_replace, char replace_by, string replace_in)
{
int i_pos;
i_pos = replace_in.find(to_replace); // Position de la premiere occurrence du texte à remplacer, dans la chaine
/*
Tant qu'il reste des occurrences du caractère à remplacer dans la chaîne, on :
. remplace la première occurrence du caractère, dans la chaîne
. recommence avec la nouvelle chaîne
*/
while(i_pos != -1)
{
replace_in[i_pos]=replace_by;
i_pos = replace_in.find(to_replace);
}
return replace_in;
} |
Partager