Estoy tratando de modificar un stringbuffer de un objeto stringstream sin tener que copiar una cadena, usando el método pubsetbuf, pero no está funcionando. Estoy siguiendo la documentación en http://www.cplusplus.com/reference/iostream/streambuf/pubsetbuf/. Aquí está mi código de ejemplo:stringstream-> rdbuf() -> pubsetbuf no está configurando el buffer
#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;
}
Y la salida es:
You say goodbye
You say goodbye
Sé que puedo utilizar stream.str (sustituir), pero este método copia el valor de 'reemplazar', y yo no quiero hacer una copia
¿Qué me estoy perdiendo?
Actualización: estoy usando VS2010
simplemente una búsqueda ridículamente rápido de SO - estás experimentando este problema? http://stackoverflow.com/questions/1494182/setting-the-internal-buffer-used-by-a-standard-stream-pubsetbuf –
Si usa VS, eche un vistazo a [esta pregunta] (http://stackoverflow.com/q/10054396/416627) (y respuesta). No funciona como crees. Su implementación está definida y solo se implementa donde tiene sentido. –
Posible duplicado de [Configuración del búfer interno utilizado por una secuencia estándar (pubsetbuf)] (http://stackoverflow.com/questions/1494182/setting-the-internal-buffer-used-by-a-standard-stream-pubsetbuf) –