cookie_io_functions: могу ли я самостоятельно сделать sh объект ostream? - PullRequest
0 голосов
/ 03 апреля 2020

У меня есть объект 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?

...