В зависимости от вашей конкретной ситуации вам может потребоваться явно сбросить / закрыть вывод.
Кроме того, для меня более логично рассматривать сжатие как часть выходной цепочки. Таким образом, вы получите согласованное поведение, если у вас будет несколько записей в выводе, вместо того, чтобы рисковать частями записи без сжатия.
Вот мое переписывание того же с добавлением некоторых элементов стиля:
- выразить логику (не повторять путь к файлу)
- использовать типы C ++ (для работы со строками)
- не указывайте избыточные
std::ios
флаги
- использовать существующие удобные typedefs
std::string const filename = "/home/username/Desktop/temp/data.csv";
{
std::ofstream outStream(filename + ".gz", std::ios::binary);
boost_io::filtering_ostreambuf compressingBuf;
compressingBuf.push(boost_io::gzip_compressor());
compressingBuf.push(outStream);
{
std::ifstream inStream(filename);
copy(inStream, compressingBuf);
outStream.flush();
}
}