Программное сжатие файлов
От: Аноним  
Дата: 07.06.08 09:20
Оценка:
не подскажите способ сжимать файлы в программе на С++.... например как использовать библиотеку zlib или есть другой более простой способ...
Re: Программное сжатие файлов
От: SchweinDeBurg Россия http://zarezky.spb.ru/
Дата: 07.06.08 09:23
Оценка:
Здравствуйте, Аноним, Вы писали:

А>не подскажите способ сжимать файлы в программе на С++.... например как использовать библиотеку zlib или есть другой более простой способ...


Рекомендую ZipArchive library — это "оболочка" zlib, которую можно использовать как в MFC-, так и в STL-приложениях.
- Искренне ваш, Поросенок Пафнутий ~ ICQ#116846877
In Windows, there’s always a catch… © Paul DiLascia
Re: Программное сжатие файлов
От: d1mk4  
Дата: 07.06.08 22:30
Оценка: 40 (7)
Здравствуйте, <Аноним>, Вы писали:

А>не подскажите способ сжимать файлы в программе на С++.... например как использовать библиотеку zlib или есть другой более простой способ...


ну, есть более простой способ которым я все время пользуюсь для таких ситуаций.
Это boost::iostreams.
Компилируем boost:
bjam --build-type=complete --with-iostreams -sZLIB_SOURCE="C:\zlib"

подробней о сборке iostreams: здесь

подробней о работе с zlib, bzip2, gzip фильтрами: zlib, gzip, bzip2

ну, в принципе интерфейсы все идентичные.

Вот собственно пример:
#include <fstream>
#include <iostream>
#include <boost/iostreams/filtering_streambuf.hpp>
#include <boost/iostreams/copy.hpp>
#include <boost/iostreams/filter/gzip.hpp>

int main() 
{
    using namespace std;
    namespace io = boost::iostreams;

    ifstream file("test.txt", ios::in | ios::binary);
    ofstream arch("test.zip", ios::out | ios::binary);
    io::filtering_streambuf<io::input> in;
    in.push(io::gzip_compressor());
    in.push(file);
    boost::iostreams::copy(in, arch);
}
... << RSDN@Home 1.2.0 alpha 4 rev. 1090>>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.