我想創建一個類流的類,通過它可以寫入std::out
和std::clog
。C++同時寫入std :: out和std:clog
我有以下代碼,但問題是它只寫入到std::clog
,而在控制檯上的輸出不是預期的(奇怪,它會覆蓋自己)。
struct Log : public std::ofstream
{
Log(const std::string filename)
: std::ofstream(filename.c_str())
{
std::clog.rdbuf(this->rdbuf());
}
};
template <typename T>
Log & operator << (Log & stream, const T & x)
{
std::cout << x;
std::clog << x;
return stream;
};
我要的是這個
Log log("logfile.txt");
log << "this should go to the console and the logfile" << 1234 << std::endl;
可以這樣做?
我應該補充一點,我想保留'std :: out'完好無損,因爲我想在我的代碼的其他部分「按原樣」使用它。 – Stingery