petyte question C++ (istringstream, copie, toussa) VS2003 / pubsetbuf

petyte question C++ (istringstream, copie, toussa) VS2003 / pubsetbuf - C++ - Programmation

Marsh Posté le 01-12-2005 à 09:19:43    

J'ai une interrogation a la con en C++
 
j'ai qqpart un truc me renvoyant des donnees, genre une fonction alacon
 

Code :
  1. void monRead(void *buf, int size);
  2. ..
  3. char * bidule = new char[longueur];
  4. monRead(bidule, longueur);


 
j'aimerais mettre le contenu de ce que me renvoie ste fonction dans un istringstream. Et la j'ai un petit doute car visiblement, pour faire ca faut passer par un std::string, genre  
 

Code :
  1. istringstream res( string(bidule, longueur), std::in);


 
Ce que j'ai peur c'est que (corrigez moi si je rate un truc):
 
"bidule" soit recopié dans dans le std::string
le std::string soit recopié dans le buffer interne du istringstream
 
et si bidule est du genre gros, ca peut devenir genant et on se promene avec des Mo de donnée pour rien. Y'a moyen d'eviter tout ce genre de chambart ? (surtout que finalement, je veux bien donner la responsabilité de la desalloc de bidule a mon istringstream)
 
le stringbuf de rdbuf() ? [:petrus75]


Message édité par chrisbk le 01-12-2005 à 15:05:59
Reply

Marsh Posté le 01-12-2005 à 09:19:43   

Reply

Marsh Posté le 01-12-2005 à 09:44:05    

up [:petrus75]
 
bon jpensais avoir trouver mon bonheur comme ca :
 
 

Code :
  1. std::istringstream strime;
  2. strime.rdbuf()->pubsetbuf("YOP",4);


 
seulement, quand on va voir pubsetbuf, on voit que ca appelle setbug, et setbuf ....

Code :
  1. virtual _Myt *setbuf(_Elem *, streamsize)
  2. { // offer buffer to external agent (do nothing)
  3.      return (this);
  4. }


 
est assez decevant [:pingouino] skoi ce bins ?
 

Reply

Marsh Posté le 01-12-2005 à 09:56:32    

Tu es l'élite, personne ne peut répondre à des questions d'élite.

Reply

Marsh Posté le 01-12-2005 à 10:15:25    

c'est flatteur, mais ca m'aide pas [:pingouino]

Reply

Marsh Posté le 01-12-2005 à 10:35:00    

Plus on évolue, et plus on se retrouve seul, c'est bien connu.

Reply

Marsh Posté le 01-12-2005 à 10:37:56    

Monde de merde

Reply

Marsh Posté le 01-12-2005 à 10:52:18    

c'est ici le topic cul ? [:kbchris]

Reply

Marsh Posté le 01-12-2005 à 11:01:34    

En tout cas, preuve que sans ferrero rocher, ça manque de succés.

Reply

Marsh Posté le 01-12-2005 à 12:00:56    

REPONDEZ §

Reply

Marsh Posté le 01-12-2005 à 12:25:57    

Présent!

Reply

Marsh Posté le 01-12-2005 à 12:25:57   

Reply

Marsh Posté le 01-12-2005 à 12:58:58    

En C, t'aurais pas eu ce problème. [:klem3i1]

Reply

Marsh Posté le 01-12-2005 à 13:35:00    

ça ressemble un peu à ça ce que tu veux faire naon ?
 
http://www.cplusplus.com/ref/iostr [...] sputn.html

Reply

Marsh Posté le 01-12-2005 à 13:44:42    

A propos de setbuf, il ne faut pas regarder l'implémentation de basic_streambuf qui ne fait rien mais de basic_stringbuf dans ton cas.
http://gcc.gnu.org/onlinedocs/libs [...] _filebufb9

Reply

Marsh Posté le 01-12-2005 à 14:09:35    

morph a écrit :

A propos de setbuf, il ne faut pas regarder l'implémentation de basic_streambuf qui ne fait rien mais de basic_stringbuf dans ton cas.
http://gcc.gnu.org/onlinedocs/libs [...] _filebufb9


 
bin j'ai regardé celle qui etait apellé par mon code pour comprendre pourquoi ca faisait rien, et effectivement, ca ne fait rien

Reply

Marsh Posté le 01-12-2005 à 14:10:11    

bjone a écrit :

ça ressemble un peu à ça ce que tu veux faire naon ?
 
http://www.cplusplus.com/ref/iostr [...] sputn.html


 
 
un peu, mais au final tu fais quand meme une recopie (bon ca fait une au lieu de deux, c'est deja ca)

Reply

Marsh Posté le 01-12-2005 à 14:15:49    

sputn a pas l'air d'ecrire grand chose, y'a qqchose qui doit m'echapper dans ce bins [:pingouino]

Reply

Marsh Posté le 01-12-2005 à 14:37:22    

jcommence a me demander si la STL a vc boite pas un peu a cet endroit la [:pingouino]
 
 

Code :
  1. #include <sstream>
  2. #include <iostream>
  3. int main()
  4. {
  5. std::istringstream strime;
  6. strime.rdbuf()->pubsetbuf("YOP",4);
  7. char prout[5];
  8. memset(prout,0,5);
  9. strime.read(prout,4);
  10. std::cout<<prout<<std::endl;
  11. return 0;
  12. }


 
ca affiche bien YOP sur gcc [:zaib3k]
monde de merde


Message édité par chrisbk le 01-12-2005 à 14:42:37
Reply

Marsh Posté le 01-12-2005 à 14:42:08    

arf c'est des choses qui arrivent mon bon monsieur [:pingouino]

Reply

Marsh Posté le 01-12-2005 à 14:46:36    

bin nan, merde sTl quoi, hein, chierie de pingouin.

Reply

Marsh Posté le 01-12-2005 à 14:51:45    

fait comme moi quand ça t'arrives: tues un poulet et fais des incantations sataniques.

Reply

Marsh Posté le 01-12-2005 à 14:57:12    

ca m'avance a rien [:pingouino]

Reply

Marsh Posté le 01-12-2005 à 15:20:34    

j'avoues, mais ça défoule [:pingouino]

Reply

Marsh Posté le 01-12-2005 à 15:21:23    

en attendant j'ia l'air con
 
y ont oublié de redefinir la fonction dans stringbuf ces cretins ou quoi ? [:le kneu]

Reply

Marsh Posté le 01-12-2005 à 19:36:18    

l'optimisation avant profiling, c'est le mal absolu  [:nicolas91200]  
Satan t'habite ...

Reply

Marsh Posté le 01-12-2005 à 20:44:16    

mais de quoi il parle ?

Message cité 1 fois
Message édité par chrisbk le 01-12-2005 à 20:44:25
Reply

Marsh Posté le 01-12-2005 à 21:46:01    

il est bourré ! :/

Reply

Marsh Posté le 01-12-2005 à 22:05:58    

Est-ce que readsome ne répond pas à ta demande ?
http://www.cplusplus.com/ref/iostr [...] dsome.html
 
(les streams, c'est le bordel)


---------------
Les aéroports où il fait bon attendre, voila un topic qu'il est bien
Reply

Marsh Posté le 01-12-2005 à 22:17:19    

[:le kneu] LISEZ la QUESTION avant de REPONDRE des CONNERIES §§§§

Reply

Marsh Posté le 01-12-2005 à 22:46:34    

Ben ouais, et il est où le pb ? Tu évites de passer par un string, mais de toute façon, ça m'étonnerait que tu puisses éviter de faire une copie du char * dans le istringstream.


Message édité par el muchacho le 01-12-2005 à 22:47:49

---------------
Les aéroports où il fait bon attendre, voila un topic qu'il est bien
Reply

Marsh Posté le 01-12-2005 à 22:49:21    

bin readsome s'appuie sur istream, qui s'appuie sur son buffer et vu que moi je veux bricoler le buffer
 
 
(bin visibelment avec pubsetbuf ca marche, mais pas sous VS [:itm])

Reply

Marsh Posté le 01-12-2005 à 22:57:18    

Reply

Marsh Posté le 01-12-2005 à 23:03:19    

heuh, bof, nan

Reply

Marsh Posté le 02-12-2005 à 01:34:22    

chrisbk a écrit :

mais de quoi il parle ?


 
J'ai peut etre mal compris, mais tu cherches soi à optimiser la copie ( dans string, puis dans istringstream), soit à réduire la conso mémoire, soit les deux. Y a 1001 dictons du genre "l'optimisation prématurée est la source de tout les maux", ou encore : "comment optimiser ? regle numero 1 : n'optimiser pas, regle numero 2, n'optimiser toujours pas, etc ... "
Ce que je voulais dire, c'est qu'il vaut mieux attendre les résultats du profiler avant de se casser le cul à bricoler/jouer avec  un *streambuf.

Reply

Marsh Posté le 02-12-2005 à 08:37:45    

++fab a écrit :

J'ai peut etre mal compris, mais tu cherches soi à optimiser la copie ( dans string, puis dans istringstream), soit à réduire la conso mémoire, soit les deux. Y a 1001 dictons du genre "l'optimisation prématurée est la source de tout les maux", ou encore : "comment optimiser ? regle numero 1 : n'optimiser pas, regle numero 2, n'optimiser toujours pas, etc ... "
Ce que je voulais dire, c'est qu'il vaut mieux attendre les résultats du profiler avant de se casser le cul à bricoler/jouer avec  un *streambuf.


 
 
bin ecoute, les dictons tout ca je les connais, et generalement les applique. Je sors pas l'asm sur n'importe quoi ou ne casse pas mon design histoire de gagner deux pouilleme.  
 
Seulement la c'est du pur bon sens : utiliser (meme temporairement) 4 Mo de ram la ou un seul est necessaire a cause de recopie multiple, ca me parait être idiot. Et perdre du temps a faire de l'inutile, ca m'ennuie. Y s'agit pas de tout demolir, il y a juste 3 lignes dans mon paté de code qui me derange et jvoulais voir a améliorer ca.
 
Vala [:dawa]
 
 
 
 

Reply

Marsh Posté le 02-12-2005 à 09:12:13    

:love:

Reply

Marsh Posté le 02-12-2005 à 09:13:37    

[:feer] degage

Reply

Marsh Posté le 02-12-2005 à 09:19:01    

     no
     \/
[:vague nocturne]

Reply

Marsh Posté le 02-12-2005 à 09:25:00    

j'ai harko en fax

Reply

Marsh Posté le 02-12-2005 à 09:26:43    

moi je l'ai en gothique

Reply

Marsh Posté le 02-12-2005 à 09:27:53    

c'est amurofl

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed