2011-08-28 7 views
6

ostream을 인수로받는 많은 함수가있는 C++ 코드가 있습니다. 함수에 대한 실행 후 ostream 객체 데이터를 검증해야한다는 이유로 이러한 함수를 단위 테스트하고 싶었습니다. 출력 스트림을 파일로 리디렉션 할 수 있지만 임시 버퍼를 만들고 버퍼로 출력 스트림을 리디렉션하고 해당 버퍼에서 읽을 수 있는지 확인하고 싶습니다.ostream 객체를 임시 버퍼로 리디렉션하는 방법은 무엇입니까?

답변

15

당신은 메모리 std::ostream에로 std::stringstream를 사용할 수 있습니다

#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

을 그리고 당신은 플러시 후'buf'을 다시 사용하려는 경우, 당신은 buf.str ("") '로 재설정 할 수 있습니다; buf.clear()' –

관련 문제