Veuillez m'aider a resoudre ce probleme

Fermé
ultra3omda Messages postés 18 Date d'inscription mercredi 22 novembre 2006 Statut Membre Dernière intervention 7 décembre 2012 - 13 déc. 2010 à 19:28
KX Messages postés 16668 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 17 mars 2023 - 13 déc. 2010 à 20:32
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 16668 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 17 mars 2023 3 004
13 déc. 2010 à 20:11
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 18 Date d'inscription mercredi 22 novembre 2006 Statut Membre Dernière intervention 7 décembre 2012
13 déc. 2010 à 20:22
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 16668 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 17 mars 2023 3 004
Modifié par KX le 13/12/2010 à 20:39
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