Veuillez m'aider a resoudre ce probleme

ultra3omda Messages postés 22 Statut Membre -  
KX Messages postés 19031 Statut Modérateur -
Bonjour,

j'aimerai avoir un programme c++ qui remplace la première occurence d'une chaine de caracteres ch1 par la chaine ch2 dans une chaine de caracteres DEBUT. en utilisant une chaine de sauvegarde FIN pendant le remplacement
exemple:
IE ARTE PIERRE PARTERRE
TOT FIN TOTALEMENT FINALEMENT

2 réponses

KX Messages postés 19031 Statut Modérateur 3 020
 
Tu peux utiliser string::replace (et tu auras sûrement besoin de string::find_first_of)

bool remplacer(std::string &mot, const std::string &sousmotavant, const std::string sousmotapres)
{
     unsigned n = mot.find_first_of(sousmotavant);
     if (n == std::string::npos)
          return false;
     mot.replace(n,sousmotavant.size(),sousmotapres);
     return true;
}

int main() 
{      
     std::string s1="PIERRE";
     remplacer(s1,"IE","ARTE");
     std::cout << s1.c_str() << std::endl; // PARTERRE

     std::string s2="TOTALEMENT";
     remplacer(s2,"TOT","FIN");
     std::cout << s2.c_str() << std::endl; // FINALEMENT

     return 0;
}
1
ultra3omda Messages postés 22 Statut Membre
 
merçi Kx mais je suis encore débutant j'aimerai avoir un programme simple juste avec les fonction strlen etc... on a pa encore vu ces string::replace etc...
0
KX Messages postés 19031 Statut Modérateur 3 020
 
Et bien, il te faut créer des équivalents "simples" des fonctions que tu n'as pas vu...
find_first_of est relativement simple à reproduire.
Pour replace une façon de faire serait de découper (avec string::substr ou un équivalent) ta chaîne en 3 morceaux : le début de ta chaîne, la sous-chaîne à enlever, et la fin de la chaîne.
Puis tu concaténes (avec string::append ou un équivalent) le début de la chaîne avec la sous-chaîne à remplacer, et la fin de la chaîne...
0