Jak opróżnić ostringstream

Standardowa klasa ostringstream pozwala na wygodne inkrementalne budowanie rozmaitych napisów. Jest jednak mocno nieoczywiste, co powinniśmy zrobić aby opróżnić wypełniony już obiekt tego typu (np. by zacząć na nim zbierać jakiś inny napis). Nie ma żadnej metody typu reset a clear nic nie daje.

Jest jednak prosty sposób - należy zrobić:

ostringstream os;
// ... używaliśmy już obiektu os, chcemy go teraz opróżnić
os.str(""); // To jest właściwe opróżnienie bufora
os.clear(); // To zeruje ewentualne flagi błędów strumienia

Zamiast os.str("") można dłużej ale oszczędniej napisać os.str(std::string()). Wywołanie os.clear() nie jest absolutnie niezbędne ale w niczym nie zaszkodzi.

komentarze obsługiwane przez Disqus