6
我有一個C++代碼,它有很多接收ostream作爲參數的函數。我想單元測試這些函數,因爲我必須在執行到函數後驗證ostream對象數據。我可以將輸出流重定向到一個文件,但我想檢查是否可以創建一個臨時緩衝區,並將輸出流重定向到緩衝區並從該緩衝區讀取。如何將ostream對象重定向到臨時緩衝區?
我有一個C++代碼,它有很多接收ostream作爲參數的函數。我想單元測試這些函數,因爲我必須在執行到函數後驗證ostream對象數據。我可以將輸出流重定向到一個文件,但我想檢查是否可以創建一個臨時緩衝區,並將輸出流重定向到緩衝區並從該緩衝區讀取。如何將ostream對象重定向到臨時緩衝區?
您可以在內存中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");
}
如果你想沖洗後,再用'buf',你可以用'buf.str(「」)復位; buf.clear()' –