2009-05-07 16 views
34

Una delle possibilità è:Il modo migliore per svuotare lo stringstream?

somestringstream.str(""); 

ma è più ottimale? Esiste un modo per preservare il buffer interno del stringing, in modo che le chiamate successive all'operatore < <() non richiedano di riservare nuovamente la memoria?

+3

È stato discusso qui: http://stackoverflow.com/questions/624260/how-to-reuse-an-ostringstream –

risposta

44

ho sempre fatto:

s.clear();//clear any bits set 
s.str(std::string()); 

@ litb gets into more detail su come seekp l'inizio del flusso combinato con std :: estremità è possibile mantenere la dimensione allocata.

+2

o semplicemente ss.str (""); // più intuitivo – Milan

+0

@ milan1612: Avresti ancora bisogno di cancellare i bit, e l'invio di un char in stile C * sarà più lento. –

+2

.. e [questo spiega] (http://stackoverflow.com/questions/20731/in-c-how-do-you-clear-a-stringstream-variable) perché 's.str (std :: string()) 'variant _could_ essere più efficiente. –

Problemi correlati