I am trying to modify a stringbuffer of a stringstream object without having to copy a string, using the method pubsetbuf, but it is not working. I am following the documentation in http://www.cplusplus.com/reference/iostream/streambuf/pubsetbuf/. Here is my example code:
#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;
}
And the output is:
You say goodbye
You say goodbye
I know I can use stream.str(replace), but this method copies the value of 'replace', and I don't want to make a copy.
What am I missing?
Update: I'm using VS2010
Not should set contents.
pubsetbuf
callsvirtual setbuf
VS 2010. There is no overload of virtual method
setbuf
inbasic_stringbuf
, it uses default frombasic_streambuf