Я пытаюсь изменить stringbuffer объекта stringstream без необходимости копировать строку, используя метод pubsetbuf, но он не работает. Я следую документации в http://www.cplusplus.com/reference/iostream/streambuf/pubsetbuf/. Вот мой пример кода:
#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;
}
И результат:
You say goodbye
You say goodbye
Я знаю, что могу использовать stream.str(replace), но этот метод копирует значение "replace", и я не хочу делать копию.
Что мне не хватает?
Обновление: я использую VS2010