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.
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.
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.
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é
C'est une simplification des possibilités de insert mais c'est ce que je cherchais.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 string strRptW(""); strRptW.insert(0, 5, 'w'); cout<<strRptW<<endl;
Merci.Résolu.
Sen.![]()
Plus simple :
Code : Sélectionner tout - Visualiser dans une fenêtre à part std::string s(5, 'w');
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.
toujours plus!,mais insert permettra éventuellement d'autres possibilités.
Sen.![]()
Salut,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 :
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
- 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 !!!
- 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
) 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
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.
On va dire : le bon sens
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'origineParce 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é.![]()
), 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
Partager