stringstream-> rdbuf () -> pubsetbuf setzt den Puffer nicht

Ich versuche, einen Stringbuffer eines Stringstream-Objekts zu ändern, ohne einen String mit der Methode pubsetbuf kopieren zu müssen, aber es funktioniert nicht. Ich verfolge die Dokumentation inhttp://www.cplusplus.com/reference/iostream/streambuf/pubsetbuf/. Hier ist mein Beispielcode:

#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;
}

Und die Ausgabe ist:

You say goodbye
You say goodbye

Ich weiß, dass ich stream.str (replace) verwenden kann, aber diese Methode kopiert den Wert von 'replace', und ich möchte keine Kopie erstellen.

Was vermisse ich?

Update: Ich verwende VS2010

Antworten auf die Frage(1)

Ihre Antwort auf die Frage