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!:oops:
Sen.
Version imprimable
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!:oops:
Sen.
Regarde les constructeurs de std::string...
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:
1
2
3 string strRptW(""); strRptW.insert(0, 5, 'w'); cout<<strRptW<<endl;
Merci.Résolu.
Sen.:P
Plus simple :
Code:std::string s(5, 'w');
toujours plus!;),mais insert permettra éventuellement d'autres possibilités.
Sen.:ccool:
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 ;) ) 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 ;))
- 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
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é.:D
Merci aussi pour ce dernier paragraphe concentré de C++.:zoubi:
Sen.
On va dire : le bon sens :D
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 :D), 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 :D )Citation:
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é.:D