Nie, jeśli używasz std::ostringstream
. Nie można odczytać bazowego bufora (stąd o
w ostringstream
), więc musisz polegać na implementacji, aby zrobić to za Ciebie, poprzez str()
.
Jednak jeśli używasz std::stringstream
(zauważ brak o
), wówczas bufor bazowy jest czytelny i basic_ostream
„s mają szczególne przeciążenia ForReading z buforów:
#include <iostream>
#include <sstream>
int main()
{
std::stringstream ss1;
ss1 << "some " << 111605 << " stuff" << std::flush;
std::cout << ss1.rdbuf() << std::endl;
std::cout << ss1.str() << std::endl;
}
wyjściowa:
niektóre 111.605 rzeczy
niektóre 111.605 rzeczy
(Example derived from here.)
Kopiuje bezpośrednio z bazowego bufora, bez kopii pośredniej.
Dzięki! Twoje rozwiązanie działa. Znalazłem również ten post http://stackoverflow.com/questions/10009809/query-stdostringstream-content/10010160#10010160 gdzie ostream służy do osiągnięcia tego samego. Właśnie zastanawiałem się jaka jest różnica między używaniem ostream i stringstream. który z nich jest bardziej wydajny? –
@WinstonHuang: Musisz go profilować, aby dowiedzieć się, który jest bardziej wydajny. Wątpię, by było to trochę szybsze i jest to z pewnością bardziej skomplikowane niż użycie 'std :: stringstream'. – GManNickG