[英]Derive from ostream or ostream_iterator to make a stream pretty printer in C++?
我有將復雜對象的表示轉儲到流中的代碼。 該表示形式使用大括號和大括號來表示嵌套對象的開始和結束。 我認為最好將所有空白留在原始輸出之外,並且如果需要,可以將漂亮的打印作為裝飾圖案,而不是漂亮地打印表示形式的格式。
漂亮的打印算法很簡單:檢查要輸出的下一個字符,如果它是一個大括號,則輸出換行+大括號+換行。 否則僅輸出字符。
我可以將此裝飾器實現為從ostream_iterator派生的類或從ostream派生的類。 哪個更常用? 創建ostream包裝器有什么弊端嗎?
建議從std::ostream
派生的唯一原因是在使用派生類構造std::streambuf
並使用其初始化基本std::ostream
時。 我認為根本沒有理由從std::ostream_iterator<...>
派生任何東西。
取而代之的是,您將從std::streambuf
派生並重寫overflow()
以執行所需的任何過濾器操作。 為了方便起見,您可以從std::ostream
派生出構造便利流。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.