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?
6
A
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");
}
E se si vuole riutilizzare 'buf' dopo un colore, è possibile ripristinarlo con' buf.str (""); buf.clear() ' –