一般在寫 C++ 的程式的時候,大多會用標準輸出(standard output)來輸出文字、或是偵錯用的資訊。在標準函式庫裡面,針對輸出的部分就有提供 std::cout
、std::cerr
、std::clog
,以及各自對應的寬字元版本。
但是在開發圖形介面的時候,往往不會顯示 console 視窗,所以這些訊息也就都看不到了。
而如果想要去攔截這些輸出的資訊,並將它們顯示在圖形介面裡面,該怎麼做呢?實際上,C++ 是允許是透過 rdbuf()
這個函式(參考),來取得或設定一個 stream 內部要使用的 stream buffer(參考)的。
也因此,透過這樣的機制,實際上是可以讓 std::cout
把資料寫到另外準備好的 stream buffer 中,然後再讀出來的!