IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

resultat bizare avec string replace


Sujet :

C++

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    80
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Territoire de Belfort (Franche Comté)

    Informations forums :
    Inscription : Mars 2006
    Messages : 80
    Par défaut 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
    un bout de code pour mieu comprendre le probléme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  2. #2
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    Le second paramètre de replace n'est pas l'offset de fin, mais le nombre de caractères à remplacer. Faut lire la doc...

    Les deux premiers exemples fonctionnent car pos = 0.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    80
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Territoire de Belfort (Franche Comté)

    Informations forums :
    Inscription : Mars 2006
    Messages : 80
    Par défaut
    Citation Envoyé par Laurent Gomila
    Le second paramètre de replace n'est pas l'offset de fin, mais le nombre de caractères à remplacer. Faut lire la doc...

    Les deux premiers exemples fonctionnent car pos = 0.
    ah la la faut que je fasse des pauses de temps en temps lol car sinon
    plein de details comme ca m'échaperont
    Aller merci et bon week end

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. String Replace avec httpd.conf
    Par Rollois dans le forum Apache
    Réponses: 5
    Dernier message: 26/08/2013, 21h19
  2. [XL-2010] Probème avec strings.replace
    Par Paro. dans le forum Macros et VBA Excel
    Réponses: 26
    Dernier message: 05/01/2012, 15h12
  3. Remplacer des caractères avec la fonction string.replace
    Par chtom dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 17/12/2008, 16h43
  4. [Struts][logic:iterate] Probleme avec String
    Par julienOriano dans le forum Struts 1
    Réponses: 7
    Dernier message: 15/06/2004, 09h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo