> Но хочется как то использовать уже реализованные классы потоков if/ofstream - чего добру то пропадать.
Их и используйте, я бы на вашем месте сделал обертку вокруг другого istream-а (и ostream-а соответственно). Chaining потоков - классический способ решения такой задачи (и не только в плюсах, разумеется). Точно также, например, делают поток-расшифровщик, или поток-расжиматель, если сжатие было поточное (deflate например).
> что я не знаю точный список всех таких методов, да и вообще недостаточно хорошо знаю устройство работы if/ofstream, чтоб сильно в них ковыряться.
Какая-то странная причина. Так разберитесь). Список он вполне конкретный, для этого есть стандарт. Справка высокого качества по стд. библиотеке есть на
en.cppreference.com/w