我在學習C++(來自C和Java大學課程),今天我想編寫一個類來過濾從通用流中獲取的字節並將其輸出寫入另一個類流。C++篩選流中字節的最佳方法
爲了達成一致,假設我想創建一個base64編碼輸入並將輸出寫入標準輸出的類。
在bash我會寫:
echo "some input data" | base64
在C++中,我想實現一個類MyB64Encoder
,將這樣的表現:
std::cout << myB64EncoderObject << "some input data";
//Alternatively, is it possible to make it like this?
std::cout << MyB64Encoder << "some input data";
的事情是,在myB64EncoderObject
有,當然,保持內部狀態和內部緩衝區。爲了防止阻塞和過多的內存使用,它必須能夠讀取並處理小塊數據,並在處理後立即輸出它們中的每一個。
有一些更多的東西來照顧:
- 對象必須等待輸出流能夠接收數據
- 對象必須拋出一個錯誤,如果沒有流閱讀從它(有點像一個破的管道?)
從效率的角度來看,這樣的問題最好的辦法是什麼?我將如何在現代C++ 1x中實現它?
包裝流(或包裝流緩衝區)。 –