Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1762 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  Flux : stringstream, à quoi sert le flush()

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Flux : stringstream, à quoi sert le flush()

n°580067
antsite
Je me souviens
Posté le 01-12-2003 à 10:42:30  profilanswer
 

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 :

Code :
  1. ostringstream oss;
  2. oss << "toto" << 2;
  3. cout << oss.str() << "\n"; //oss.str() contient "toto 2", ok
  4. //ici je voudrais vider le flux
  5. oss << "ta" << 3;
  6. cout << oss.str() << "\n"; //oss.str() contient "toto 2ta 3"


 
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 :

Code :
  1. ostringstream oss;
  2. oss << "toto" << 2 << ends;
  3. cout << oss.str() << "\n";
  4. //...
  5. oss << "ta" << 3 << ends;
  6. cout << oss.str().c_str() << "\n"; //affiche bien ce que je veux "ta 3"


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
mood
Publicité
Posté le 01-12-2003 à 10:42:30  profilanswer
 

n°580251
Taz
bisounours-codeur
Posté le 01-12-2003 à 11:42:19  profilanswer
 

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 :
  1. #include <sstream>
  2. #include <iostream>
  3. #include <memory>
  4. int main()
  5. {
  6.   std::auto_ptr<std::ostringstream> oss(new std::ostringstream);
  7.   *oss << 1 << std::hex << 42 << "911" << '\n';
  8.  
  9.   std::cout << oss->str();
  10.   oss.reset(new std::ostringstream);
  11.   *oss << "dawa" << 3;
  12.   std::cout << oss->str();
  13. }


 
je ferais comme ça, tu as le même nom de variable. je me suis jamais vraiment posé la question en fait...

n°580373
blackgodde​ss
vive le troll !
Posté le 01-12-2003 à 13:30:21  profilanswer
 

tu peux faire : oss.str("" );


---------------
-( BlackGoddess )-
n°580378
Taz
bisounours-codeur
Posté le 01-12-2003 à 13:43:31  profilanswer
 

pas pour un ostringstream, sinon c'est effectivement une bonne solution

n°580654
SoWhatIn22
Posté le 01-12-2003 à 16:39:14  profilanswer
 

Taz a écrit :

pas pour un ostringstream, sinon c'est effectivement une bonne solution


pourquoi pas pour un ostringstream?

n°580710
Taz
bisounours-codeur
Posté le 01-12-2003 à 17:04:24  profilanswer
 

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)

n°580747
antsite
Je me souviens
Posté le 01-12-2003 à 17:26:44  profilanswer
 

merci je vais tester ça (je pensais qu'ostringstream n'avait la méthode str qu'en tant qu'accesseur)


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  Flux : stringstream, à quoi sert le flush()

 

Sujets relatifs
[Servlet] Envoyer un flux à une servletFonction Shell et redirection de flux d'un exe (>)
Flux de donnée de type Reader[MySQL] A quoi sert l'attribut UNIQUE ??
[Java] Récupération du flux vidéo d'une webcam ?un width qui ne sert a rien
'const' a quoi sert ca sert dans une fonctiona quoi sert register_globals???
[PHP] ça sert à quoi le @ devant une fonction ?strdatetype sous asp, a quoi ca sert et comment ?
Plus de sujets relatifs à : Flux : stringstream, à quoi sert le flush()


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR