我有以下代碼將我的std::cout
輸出重定向到日誌文件。添加時間戳與std :: cout
std::ofstream out("out.txt");
std::streambuf *coutbuf = std::cout.rdbuf(); //save old buf
std::cout.rdbuf(out.rdbuf()); //redirect std::cout to out.txt!
現在我想的是,每當一個新行出現,那麼當前時間戳將被寫入該文件。
我知道我能實現這一目標:
std::cout << getTime() << "printing data" << std::endl;
但我想是的std::cout
照顧它會自動莫名其妙。那可能嗎?
你應該考慮爲例如自己的'std :: streambuf'提供自己的'std :: streambuf'。符合'std :: ostream'的記錄器類實現來實現這一點。 –
如果沒有實現一個開放式的streambuf來積累輸出,並在每次刷新時先插入一個時間戳,我會謹慎地猶豫,說這可能是另一種方式。 iostream傢伙知道把兔子從最奇怪的地方拉出來,所以永遠不要說永遠,但知道我所知道的他們,我不認爲它可能是另一種方式。 – WhozCraig
考慮到你對C++是陌生的,並且給出的答案依賴於IO過程的相當先進的操作,我會推薦你使用Paul Evans的答案,或者放棄它。 – elyashiv