std::ostream
не лучшее место для реализации фильтрации. У него нет соответствующих виртуальных функций, чтобы позволить вам сделать это.
Возможно, вы захотите написать класс, производный от std::streambuf
, содержащий обернутый std::ostream
(или обернутый std::streambuf
), а затем создать std::ostream
, используя этот std::streambuf
.
std::streambuf
имеет виртуальную функцию overflow
, которую вы можете переопределить и использовать для изменения байтов перед передачей их в упакованный выходной класс.