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 :

modèle de string ?


Sujet :

C++

  1. #1
    Membre émérite
    Avatar de mamelouk
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    867
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2005
    Messages : 867
    Par défaut modèle de string ?
    Salut à tous,

    Je me demandais comment on faisait un modèle de string en C++ ? Je m'explique : disons j'ai la variable
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    string filename("fichier_#_machin.jpg");
    et je voudrais remplacer # par un chiffre. Et voudrais pouvoir le faire sans trop de manip. Du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    filename.replace('#', '13');
    Bien sur, la fonction replace des string C++ ne fait pas ca, trop facile. Une idée ?

  2. #2
    r0d
    r0d est déconnecté
    Membre expérimenté

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    4 290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 4 290
    Billets dans le blog
    2
    Par défaut
    Bonjour,

    tu tombes bien, je viens juste d'implementer une fonction qui fait ça:
    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
    /**
    * @brief replace all occurence of a string by another string, into a given string
    * 
    * @param str string in wich something must be replaced
    * @param sb string that must be replaced
    * @param sa string that sb must be replaced by
    * @return the string that result of this replacement
    */
    std::string& replace(std::string& str, const std::string sb, const std::string sa)
    {
    	std::string::size_type n, nb = 0;
     
    	while ((n = str.find(sb,nb)) != std::string::npos)
    	{
    		str.replace(n,sb.size(),sa);
    		nb = n + sa.size();
    	}
     
    	return str;
    }
    et avec les commentaires prêts pour doxygen

  3. #3
    Membre émérite
    Avatar de mamelouk
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    867
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2005
    Messages : 867
    Par défaut
    très bien

    je vais voir tout de meme si je dis pas des betises car je crois bien que la méthode replace permet de faire ca sans trop d'effort (ie en une ligne de code)

    en tout cas merci pour ta réactivité

  4. #4
    r0d
    r0d est déconnecté
    Membre expérimenté

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    4 290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 4 290
    Billets dans le blog
    2
    Par défaut
    Yep, si tu trouves comment faire plus simple, tu posteras la solution stp?

  5. #5
    Membre émérite
    Avatar de mamelouk
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    867
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2005
    Messages : 867
    Par défaut
    Yep. Voilà

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    int main(void){
     
    string original("fichier_#");
    string token("#");
    string replacement("14");
     
    original.replace(original.find(token, 0),
                              token.length(),
                              replacement);
     
    cout << original << endl;
    }
    donne:
    Voila voila

  6. #6
    Membre émérite
    Avatar de mamelouk
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    867
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2005
    Messages : 867
    Par défaut
    uh
    le seul problème étant qu'il modifie la chaine de caractère original, ce que je ne veut pas ^^

  7. #7
    r0d
    r0d est déconnecté
    Membre expérimenté

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    4 290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 4 290
    Billets dans le blog
    2
    Par défaut
    Il suffit de faire une copie avant.
    Merci pour le retour positif

  8. #8
    Membre émérite
    Avatar de mamelouk
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    867
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2005
    Messages : 867
    Par défaut
    allez, encore mieux : utiliser boost-> http://www.boost.org/doc/html/string...html#id2742991

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

Discussions similaires

  1. sed - occurences d'un modèle dans un string
    Par slig_80 dans le forum Shell et commandes GNU
    Réponses: 4
    Dernier message: 12/03/2013, 13h28
  2. éliminer un caractere d'un string
    Par no-vice dans le forum Langage
    Réponses: 5
    Dernier message: 09/08/2002, 14h55
  3. URGENT: retour de string
    Par Pinggui dans le forum CORBA
    Réponses: 4
    Dernier message: 15/07/2002, 09h47
  4. Réponses: 2
    Dernier message: 05/06/2002, 12h29
  5. String Grid et choix d'une couleur pour une ligne
    Par Gigottine dans le forum C++Builder
    Réponses: 12
    Dernier message: 17/05/2002, 15h23

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