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 :

répétition caractère dans une chaine


Sujet :

C++

  1. #1
    Membre très actif
    Homme Profil pro
    retraité
    Inscrit en
    Septembre 2006
    Messages
    286
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Septembre 2006
    Messages : 286
    Par défaut répétition caractère dans une chaine
    bonjour,
    Je ne sais pas comment poser ma question :fonction qui crée une chaine qui répète un caractère.Je veux obtenir strxyz="wwwwwww.." nfois.
    Le mot clef est?
    Merci encore!
    Sen.

  2. #2
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 5 463
    Par défaut
    Regarde les constructeurs de std::string...
    Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.

  3. #3
    Membre très actif
    Homme Profil pro
    retraité
    Inscrit en
    Septembre 2006
    Messages
    286
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Septembre 2006
    Messages : 286
    Par défaut
    Merci.
    Mes recherches laborieuses pour arriver à parler comme la tribu m'ont amené à trouver dans les librairies de C++ des codes que j'ai adapté
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
                        string strRptW(""); strRptW.insert(0, 5, 'w'); 
                        cout<<strRptW<<endl;
    C'est une simplification des possibilités de insert mais c'est ce que je cherchais.
    Merci.Résolu.
    Sen.

  4. #4
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 5 463
    Par défaut
    Plus simple :

    Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.

  5. #5
    Membre très actif
    Homme Profil pro
    retraité
    Inscrit en
    Septembre 2006
    Messages
    286
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Septembre 2006
    Messages : 286
    Par défaut
    toujours plus!,mais insert permettra éventuellement d'autres possibilités.
    Sen.

  6. #6
    Expert éminent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 644
    Par défaut
    Salut,
    Citation Envoyé par senvedgi Voir le message
    toujours plus!,mais insert permettra éventuellement d'autres possibilités.
    Sen.
    Oui, tout à fait, mais...

    KISS (Keep It Simple, Stupid) !!!


    insert permet d'autres choses, mais est adapté à d'autres besoins! Tant qu'il n'est question "que" de définir une nouvelle chaine (de déclarer une variable de type std::string qui contient une répétition de caractères, autant se limiter à "simplement" utiliser le consturcteur qui va bien.

    Si, plus tard, tu éprouve le besoin d'insérer une répétition de caractères à des endroits donnés, il sera "toujours temps" d'utiliser insert dans cette situation particulière!

    De plus, il faut comprendre que, en décidant d'utiliser directement insert, tu travaille en deux temps :
    1. tu crées une chaine vide, mais attention! ce n'est pas parce que tu crées une chaine vide que le constructeur ne fait rien, loin de là, surtout en appelant le constructeur particulier que tu appelle ici !!!
    2. tu appelle la fonction insert qui va prendre du temps :
      • à augmenter la taille de la chaine pour qu'elle puisse contenir les caractères supplémentaires
      • à déplacer tous les caractères qui se trouvent après le point d'insertion
      • à copier N fois le caractère que tu veux rajouter
    Bien sur, ces trois étapes ont de grande chances de se faire en une seule instruction à chaque fois (sans douteà coup de memcpy pour les deux dernières, dans l'implémentation de la fonction ) mais il est dommage de ce dire que ce sera fait après le constructeur (qui a lui-même pris du temps et qui aurait très bien pu effectuer les étapes nécessaires) et que, de plus, certaines étapes seront inutiles du simple fait que tu travailles... sur une chaine vide (il n'y a, a priori, rien à décaler )
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  7. #7
    Membre très actif
    Homme Profil pro
    retraité
    Inscrit en
    Septembre 2006
    Messages
    286
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Septembre 2006
    Messages : 286
    Par défaut
    Bravo!Bien deviné ou hasard?
    Parce que cette chaîne calculée de n zéro devrait être discontinue dans mon code.
    Il va falloir qu'elle soit de la forme terminée si on fait cout<<
    "0000000"...."0000"...."000".Si elle peut construire cette chaîne je vais étudier la question de insert car la modification de la chaine d'origine style <abcd...xyz> en <abcd0000ijkl00opqrs00xyz> en une passe va m'intéresser,la fonction actuelle construite avec replace me posant qq difficultés.Et je suis pressé.
    Merci aussi pour ce dernier paragraphe concentré de C++.
    Sen.

  8. #8
    Expert éminent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 644
    Par défaut
    Citation Envoyé par senvedgi Voir le message
    Bravo!Bien deviné ou hasard?
    On va dire : le bon sens
    Parce que cette chaîne calculée de n zéro devrait être discontinue dans mon code.
    Il va falloir qu'elle soit de la forme terminée si on fait cout<<
    "0000000"...."0000"...."000".Si elle peut construire cette chaîne je vais étudier la question de insert car la modification de la chaine d'origine style <abcd...xyz> en <abcd0000ijkl00opqrs00xyz> en une passe va m'intéresser,la fonction actuelle construite avec replace me posant qq difficultés.Et je suis pressé.
    Attention, si tu pars d'une chaine existante <abcd...xyz> qu'il te faut modifier (comprends: dont tu ne dois pas garder de trace du contenu d'origine ), tu es, effectivement, dans le cas où la fonction insert devient utile, mais il faut te dire que, de toutes manières, insert est prévu pour... insérer certains éléments à une position donnée, et que, s'il y a plus d'une position à laquelle il est nécessaire d'insérer un (ou des) éléments, tu devra d'office l'invoquer pour chaque position (l'idéal étant sans doute d'insérer les éléments aux positions "les plus proches de la fin" en premier, pour éviter d'avoir, en plus, à réfléchir au nombre d'élément insérés )
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 26/11/2005, 13h44
  2. [VS.net] Vérifier le présence d'un caractère dans une chaine
    Par arnolem dans le forum Windows Forms
    Réponses: 15
    Dernier message: 10/09/2005, 15h19
  3. Recuper un caractère dans une chaine. (novice)
    Par Thierry8 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 22/08/2005, 09h07
  4. Réponses: 8
    Dernier message: 08/06/2004, 01h29

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