resultat bizare avec string replace
Bonsoir,
Voila j'avai écrit un bout de code tout con qui remplace une string contenant"expected" par "resulted".
ma fonction marchait bien, mais ce matin je me suis aperçu que ma fonction ne donnait plus le résultat attendu :aie:
un bout de code pour mieu comprendre le probléme
Code:
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
|
#include <iostream>
using namespace std;
/* s est toujours de taille 8 */
void replace_expected(string s)
{
cout << " string before replace :" << s << endl;
cout << " size before replace :" <<s.size() << endl;
size_t pos = s.find("expected");
size_t end_pos = 8 ;
s.replace(pos, pos+end_pos, "resulted");
cout << " string after replace : " << s << endl;
cout << " size string after replace :" <<s.size() << endl <<endl;
}
int main(int argc, char **argv)
{
string a = "expected.tar.gz" ;
string b = "expected_0_0_0.tar.gz" ;
string c = "name_expected_0_0_0.tar.gz";
replace_expected(a);
replace_expected(b);
replace_expected(c);
return 0;
} |
la fonction remplace bien le expected par resulted sauf pour le 3 éme cas et je ne vois pa pourquoi ?
voici le résultat d'execution du prog :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
|
string before replace :expected.tar.gz
size before replace :15
string after replace : resulted.tar.gz
size string after replace :15
string before replace :expected_0_0_0.tar.gz
size before replace :21
string after replace : resulted_0_0_0.tar.gz
size string after replace :21
/* cas qui foire -_- */
string before replace :name_expected_0_0_0.tar.gz
size before replace :26
string after replace : name_resulted0.tar.gz
size string after replace :21 |