最近的項目需要把cerr的輸出寫到文件中去,于是開始找這方面的資料。其實I/O重定向是非常簡單的。 base_io有個rdbuf方法,它的定義如下: basic_streambuf<Elem, Traits> rdbuf() const; 事實上,每個C++ 的I/O都有一塊獨立的緩沖區,只有當調用flush時才把其中的內容寫入到文件或輸出到屏幕,我們只需要把這塊緩沖區的指針替換成別的指針就能實現重定向。MSDN給出了一個非常簡潔的例子: main() { 這段代碼雖然簡單,但要注意,如果I/O的緩沖區不可用,比如上面,在沒重新設置cout.rdbuf前就關閉了文件,那么程序Crash掉了。 |
隨筆分類(224)
收藏夾(13)
狡兔多窟
收藏博客
- 開源C++ Web應用服務器中間件(國內開源項目)
- c++,web,lua,管理 等
- 知其然,知其所以然。熱愛IT技術,分享科技生活。專注于分布式、互聯網、游戲的開發技術。 無聊夢見憂郁,找到理想不太易,理想有日達成,找到心底夢想的世界。BEYOND!
- 關注C++,3D技術,游戲開發,移動開發(iPhone/iPad,Android等)
- 網絡編程技術,VA破解實時發布
- ios 開發
- 游戲開發 Flash Scaleform GFx C++
- VS2010 ,TFS2010
- iphone 開發