Как перенаправить объект Ostream во временный буфер? - PullRequest
6 голосов
/ 28 августа 2011

У меня есть код C ++, который имеет много функций, которые получают ostream в качестве аргумента. Я хотел провести модульное тестирование этих функций, для этого я должен проверить данные объекта ostream после выполнения функции. Я могу перенаправить поток вывода в файл, но я хотел проверить, могу ли я создать временный буфер, перенаправить поток вывода в буфер и прочитать из этого буфера.

1 Ответ

16 голосов
/ 28 августа 2011

Вы можете использовать std::stringstream как память 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");
}
...