Próbuję zmodyfikować bufor string obiektu stringstream bez konieczności kopiowania ciąg, używając metody pubsetbuf, ale nie działa. Postępuję zgodnie z dokumentacją pod numerem http://www.cplusplus.com/reference/iostream/streambuf/pubsetbuf/. Oto mój przykładowy kod:stringstream-> rdbuf() -> pubsetbuf nie ustawia bufora
#include <iostream>
#include <sstream>
int main(int argc, char* argv[])
{
std::stringstream stream("You say goodbye");
char replace[] = {"And I say hello"};
std::cout << stream.str() << std::endl; // Checking original contents
stream.rdbuf()->pubsetbuf(replace, 16); // Should set contents here
std::cout << stream.str() << std::endl; // But don't :(
return 0;
}
a wyjście jest:
You say goodbye
You say goodbye
wiem, że mogę używać stream.str (wymienić), ale ta metoda kopiuje wartość „zastąpić”, a ja nie chcę robić kopii.
Czego mi brakuje?
Aktualizacja: używam VS2010
prostu śmiesznie Szybkie wyszukiwanie SO - czy występuje ten problem? http://stackoverflow.com/questions/1494182/setting-the-internal-buffer-used-by-a-standard-stream-pubsetbuf –
Jeśli używasz VS, spójrz na [to pytanie] (http: // /stackoverflow.com/q/10054396/416627) (i odpowiedz). To nie działa tak, jak myślisz, że tak. Jego implementacja jest zdefiniowana i wdrażana tylko tam, gdzie ma to sens. –
Możliwy duplikat [Ustawianie wewnętrznego bufora używanego przez standardowy strumień (pubsetbuf)] (http://stackoverflow.com/questions/1494182/setting-the-internal-buffer-used-by-a-standard-stream-pubsetbuf) –