Flux : stringstream, à quoi sert le flush() - C++ - Programmation
Marsh Posté le 01-12-2003 à 11:42:19
flush ne vide rien et ne sert à rien sur un stringstream, c'est juste là à cause de l'héritage. ends est également inutile dans ton cas, puis que str().c_str() est une chaîne terminée par un zéro.
"\n" -> '\n'.
sinon pour ta question, je ne connais pas de solution, d'ailleurs je ne pense pas que cela ait un sens. à défaut, tu peux faire avec une allocation dynamique, tu la planque dans un std::auto_ptr ou boost::shared_ptr
ta solution marche par ce qu'une std::string peut contenir des 0 sans problème. en fait, c_str != [data, size] donc en foutant un 0 et en passant par c_str, ça tronque
Code :
|
je ferais comme ça, tu as le même nom de variable. je me suis jamais vraiment posé la question en fait...
Marsh Posté le 01-12-2003 à 13:30:21
tu peux faire : oss.str("" );
Marsh Posté le 01-12-2003 à 13:43:31
pas pour un ostringstream, sinon c'est effectivement une bonne solution
Marsh Posté le 01-12-2003 à 16:39:14
Taz a écrit : pas pour un ostringstream, sinon c'est effectivement une bonne solution |
pourquoi pas pour un ostringstream?
Marsh Posté le 01-12-2003 à 17:04:24
ah ouais tiens t'as raison, je savais pas que str étais surchargée ... intéressant. jamais eu besoin, mais bon. je retire mes commentaires et ma solution (l'exemple de auto_ptr servira quand même peut être)
Marsh Posté le 01-12-2003 à 17:26:44
merci je vais tester ça (je pensais qu'ostringstream n'avait la méthode str qu'en tant qu'accesseur)
Marsh Posté le 01-12-2003 à 10:42:30
Salut,
J'utilise dans mon application un ostringstream, et j'ai pas mal de questions à ce sujet :
tout d'abord on écrit dans le flux via l'opérateur << et je récupère le tout sous forme de string via la méthode str().
Seulement j'aimerais bien "vider" le flux de temps en temps, explication :
et j'aimerais bien pouvoir récupérer seulement "ta 3", donc comment faire ?
La solution que j'ai trouvé, dites moi si ça va pas :
je passe donc par la méthode c_str() de la classe string qui va donc s'arrêter au premier caractère nul rencontré. C'est tout ce que j'ai trouvé...
Biensur mon but n'est pas simplement d'afficher "ta 3" comme dans l'exemple, mais ensuite de travailler avec cette chaine.
Sinon autre question, toujours dans l'optique de "vider" le flux, je me suis penché sur la méthode flush() et je n'ai absolument pas compris à quoi elle sert...
merci
ANT
Message édité par antsite le 01-12-2003 à 10:44:06