2009-10-14 3 views
7

Tôi đã đọc về nén trong các chương trình và tôi bắt đầu tạo một dự án đơn giản mới, một dây kéo (chỉ là dây kéo, không phải là giải nén), nhưng tôi chỉ tìm thấy zLib, và nó cho C. Tôi biết rằng Các thư viện C có thể được sử dụng trong C++, nhưng tôi thích sử dụng các thư viện C++. Có ai biết một người tốt để đề nghị?Thư viện nén Đối với C++

Trân trọng.

+5

Nếu bạn biên dịch thư viện C với trình biên dịch C++, nó có thể sẽ hoạt động (và sau đó là C++). –

+3

Nếu bạn định tạo một tiện ích nén không/không thể giải nén, cái gì có thể tốt hơn 'rm BIG_FILE'? –

+0

có thể? có lẽ không ... nó _will_ làm việc. –

Trả lời

5

Hầu hết các thư viện nén mà tôi biết được viết bằng C vì hai lý do: một, tuổi chung của các thuật toán nén tốt; và hai, tính di động cao (và độ ổn định) của C trên nền tảng.

Tôi đề xuất bất kỳ điều nào sau đây. Nếu bạn muốn có giấy phép tốt, hãy chọn một trong hai giấy phép hàng đầu, nếu không bạn đang mở để sử dụng mã GPL, hãy chọn một trong hai giấy phép cuối cùng.

1

Tôi khuyên bạn nên sử dụng zlib. Nó được thiết kế cho C, nhưng nó hoạt động tốt trong C++.

Sử dụng thư viện C++ gốc thực sự chỉ giúp khi thư viện đủ lớn và phức tạp mà nó có thể hưởng lợi từ thiết kế hướng đối tượng. zlib tương đối đơn giản và không cần các tính năng hướng đối tượng.

1

Sử dụng libzip: http://www.nih.at/libzip/ Giấy phép là khá dễ dãi và nó làm tất cả các bạn n eed, từ mã C hoặc C++.

1

zlib được khuyến khích mạnh mẽ. Nó được viết tốt và giao diện khá sạch sẽ. Tôi không thấy bao nhiêu một trình bao bọc C++ có thể đơn giản hóa các API. Hơn nữa, theo quan điểm của tôi, zlib đạt được một sự cân bằng tốt giữa (de) tốc độ nén và kích thước tập tin. Bzip2 quá chậm trong khi tỷ lệ nén của LZO và UCL quá xấu. Sử dụng zlib, xin vui lòng.

+0

Giao diện Zlib có vẻ hơi lạ với tôi. Tôi thích tăng cường :: iostreams wrap, nhiều saner hơn. – piotr

2

Zlib là tốt, nhưng bạn có thể muốn kiểm tra LZMA SDK cũng như (bạn có thể nén để .7z định dạng, ngoài zip)