Veuillez m'aider a resoudre ce probleme

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

  1. Modérateur
    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
    1. 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
      1. Modérateur
        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