簡體   English   中英

從ostream或ostream_iterator派生,使流在C ++中成為漂亮的打印機?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM