У меня есть объект std::ostream
, а остальная часть моей программы должна взаимодействовать с FILE*
. Поэтому я использую fopencook ie с пользовательской реализацией write
и close
.
cookie_io_functions_t funcs = {
.read = nullptr,
.write = my_stream_write,
.seek = nullptr,
.close = my_stream_close
};
Проблема в том, что я не могу fflush
FILE*
, т.е. сохранение данных на диск, потому что cookie_io_functions_t
не позволяет мне предоставить пользовательский flush
.
Данные по-прежнему записываются через интерфейс функции cook ie io. Другие части программы воспринимают это как FILE*
, поэтому она вызывает fwrite
, и cook ie вызовет my_stream_write
.
Если я хочу flush
поток, могу ли я просто напрямую работать на объекте ostream
? Любое осложнение с этим? Будет ли это недействительным какое-либо внутреннее состояние объекта cook ie?