Мне нужна оболочка iostream для zlib, которая позволяет добавлять данные в конец существующего потока.
Функция gzopen () в режиме добавления следует следующему правилу. «При добавлении gzopen не проверяет, начинается ли файл с потока gzip, и не ищет конца потоков gzip, чтобы начать добавление. Gzopen просто добавляет поток gzip к существующему файлу». Например. открытие файла с опцией «а» создаст файл с несколькими сжатыми потоками.
Оболочка gzofstream для zlib перевести std :: ios_base :: app в список параметров в режим «ab» функции gzopen (). В результате gzofstream также создаст файл с несколькими потоками.
Однако в моем приложении мне нужно альтернативное поведение. Главный модуль должен открыть файл в режиме добавления (с параметром std :: ios_base :: app), записать небольшую часть данных в конец существующего потока и закрыть файл. Например, файл всегда должен содержать не замужем сжатый поток после нескольких операций открытия / закрытия.
Пример gzlog от zlib имеет функциональность, близкую к требуемой. Тем не менее, это чистый C.
Можете ли вы предложить несколько готовых решений для моей задачи?
Похоже, что готового решения для этого случая не существует: оболочки iostream не поддерживают операцию добавления.
Я реализовал собственный код на основе gzlog и чистого C (не C ++).
Других решений пока нет …