2009-05-07 6 views
34

L'une des possibilités est:La meilleure façon de vider la chaîne strings?

somestringstream.str(""); 

Mais est-il optimal? Y at-il un moyen de préserver le tampon interne de stringstream, de sorte que les opérateurs < <() suivants ne requièrent plus de réserver de la mémoire?

+3

Il a été discuté ici: http://stackoverflow.com/questions/624260/how-to-reuse-an-ostringstream –

Répondre

44

Je l'ai toujours fait:

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

@litb gets into more detail sur la façon de seekp au début du flux combiné avec std :: se termine, vous pouvez garder votre taille allouée.

+2

ou simplement ss.str (""); // plus intuitif – Milan

+0

@ milan1612: Vous devrez toujours effacer les bits, et l'envoi d'un caractère de style C * sera plus lent. –

+2

..et [ceci explique] (http://stackoverflow.com/questions/20731/in-c-how-do-you-clear-a-stringstream-variable) pourquoi le 's.str (std :: string()) 'variant _could_ être plus efficace. –

Questions connexes