2009-05-07 13 views
34

Jedną z możliwości jest:Najlepszy sposób na pusty stringstream?

somestringstream.str(""); 

Ale jest to najbardziej optymalna? Czy istnieje sposób na zachowanie wewnętrznego bufora stringstream, aby następujące wywołania operatora: < <() nie wymagały ponownego zarezerwowania pamięci?

+3

Zostało to omówione tutaj: http://stackoverflow.com/questions/624260/how-to-reuse-an-ostringstream –

Odpowiedz

44

Zawsze zrobić:

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

@litb gets into more detail o tym, jak seekp do początku strumienia w połączeniu z std :: kończy można zachować swój przydzielony rozmiar.

+2

lub po prostu ss.str (""); // bardziej intuicyjny – Milan

+0

@ milan1612: Nadal trzeba wyczyścić bity, a wysyłanie znaku w stylu C * będzie wolniejsze. –

+2

..i [to wyjaśnia] (http://stackoverflow.com/questions/20731/in-c-how-do-you-clear-a-stringstream-variable) dlaczego 's.str (std :: string()) 'wariant _ może być bardziej wydajny. –

Powiązane problemy