Я скачал исходный код с сайта и собрал его, но при запуске теста все сжатые файлы имеют окончания строк CR + LF, а не только LF, что делает разархивированные файлы отличными от оригиналов,
Я смотрю на источник, но кажется, что они уже открывают файл в двоичном режиме:
gzstreambuf* gzstreambuf::open( const char* name, int open_mode) {
if ( is_open())
return (gzstreambuf*)0;
mode = open_mode;
// no append nor read/write mode
if ((mode & std::ios::ate) || (mode & std::ios::app)
|| ((mode & std::ios::in) && (mode & std::ios::out)))
return (gzstreambuf*)0;
char fmode[10];
char* fmodeptr = fmode;
if ( mode & std::ios::in)
*fmodeptr++ = 'r';
else if ( mode & std::ios::out)
*fmodeptr++ = 'w';
*fmodeptr++ = 'b';
*fmodeptr = '\0';
file = gzopen( name, fmode);
if (file == 0)
return (gzstreambuf*)0;
opened = 1;
return this;
}
Я бы очень хотел использовать этот фрагмент кода, потому что он выглядиточень чистый и легко собирается на mingw gcc.Единственная проблема - это хитрый бизнес, который я мог бы опустить, если бы мог найти решение для него.