2011-08-28 12 views
6

Tengo un código C++ que tiene muchas funciones que reciben ostream como argumento. Quería probar esas funciones unitarias, para eso tengo que verificar los datos del objeto ostream después de la ejecución de la función. Puedo redirigir el flujo de salida a un archivo, pero quería verificar si puedo crear un buffer temporal y redirigir el flujo de salida al buffer y leer desde ese buffer.cómo redirigir el objeto ostream a un búfer temporal?

Respuesta

15

Se puede utilizar como un std::stringstream en la memoria std::ostream:

#include <iosfwd> 
#include <sstream> 
#include <cassert> 

void my_func(std::ostream& out) { 
    out << "test"; 
} 

int main() { 
    std::ostringstream buf; 
    my_func(buf); 
    assert(buf.str() == "test"); 
} 
+0

Y si desea volver a utilizar 'buf' después de un lavado, puede restablecerla con' buf.str (""); buf.clear() ' –

Cuestiones relacionadas