OVH Cloud OVH Cloud

Concatenation de chaines

13 réponses
Avatar
Zouplaz
Bonjour, y-a-t-il une bonne raison pour que :

temp = baseFileName + '_' + name

fonctionne bien (temp,baseFileName,name étant des std::string)

et que

temp = baseFileName + '_' + name + "_000"

ne fonctionne pas (en step/step avec le bebugger temp contient alors
n'importe quoi dès que cette ligne s'exécute).


Merci

3 réponses

1 2
Avatar
Zouplaz
Benoit Rousseau - :


Pourquoi n'utilises-tu pas un stringstream ?
Ici il me semble qu'un string est créé et dupliqué à chaque appele de
l'operateur '+'

Et tu pourras en plus entrer directement tes entiers dans le flux (plus
de itoa :-)



Bin parce que je connais pas bien...

Grosso modo la syntaxe ça donne quoi ?

stringstream sts;
sts << "hello" << monInt << "zouplaz" << monFloat << mastdString;

Et après on récupère le contenu de sts ?

Si c'est aussi simple alors je suis preneur !!

Avatar
Benoit Rousseau
Zouplaz wrote:
stringstream sts;
sts << "hello" << monInt << "zouplaz" << monFloat << mastdString;

Et après on récupère le contenu de sts ?

Si c'est aussi simple alors je suis preneur !!


C'est exactement ca. Ca marche comme le cout et comme tous les flux.
Utilise plutôt ostringstream qui n'est dédié qu'à la sortie.
J'ai aussi mis du temps à me lancer, mais j'en avais marre de faire des
sprintf( s, "%d", i ); et des trucs comme ca :)

--
--------------------------------------------
Benoît Rousseau : roussebe at spray dot se
Jouez en programmant : http://realtimebattle.sourceforge.net/

Avatar
Michaël Monerau
Zouplaz wrote:
Mickael Pointier - :


Tu es en Release, ou en Debug ?

Est-ce que ca fait pareil si tu _utilises_ "truc", par exemple en
rajoutant un cout<<truc; juste avant le "return 0;" ?



En debug. Il y a un bug dans le debugger de vsnet 2002 qui empêche la
visualisation correcte du contenu d'une std::string si elle fait + de
16 caractères. Il faut bidouiller un fichier pour que ça fonctionne.


Ce n'est pas un bug, mais une limitation du debugger. En effet, comme c'est
une commande de script indépendante du contexte, le debugger t'affiche la
valeur d'un membre de l'objet. Mais comme la gestion des buffers est assez
complexe dans un std::string (pour des raisons de rapidité que je ne connais
pas), le debugger s'emmêle un peu les crayons. Je m'étais fait avoir pareil
:p

Finalement, j'avais corrigé tout ça en faisant apparaître les *deux* buffers
dans l'info bulle, et suivant le cas, je regardais l'un ou l'autre (ça se
voit facilement :p). Ca marchait très bien !

Il est à noter que dans 7.1, tout ça est corrigé, et marche tout seul sans
bidouille (l'info-bulle marche parfaitement, quelque soit le buffer en
cours).
--
<=- Michaël "Cortex" Monerau -=>
"OK, We'll call it a draw" - Monthy Python


1 2