2011-08-28 2 views
6

Ho un codice C++ che ha un sacco di funzioni che riceve ostream come argomento. Volevo testare l'unità di quelle funzioni, per questo devo verificare i dati dell'oggetto ostream dopo l'esecuzione alla funzione. Posso reindirizzare il flusso di output in un file, ma volevo controllare se posso creare un buffer temporaneo e reindirizzare il flusso di output al buffer e leggere da quel buffer.come reindirizzare l'oggetto ostream su un buffer temporaneo?

risposta

15

È possibile utilizzare std::stringstream come nella 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

E se si vuole riutilizzare 'buf' dopo un colore, è possibile ripristinarlo con' buf.str (""); buf.clear() ' –