2011-12-06 65 views
0

我有一個「stringstream」變量,它以gzip格式存儲一些壓縮的二進制數據。VisualC++在內存中解壓縮

我想解壓縮這個stringstream變量在內存中。

首先,對於gzip格式的二進制數據的內存解壓縮,您建議使用哪種第三方庫?

我注意到了zlib庫的gzip和deflate格式的壓縮/解壓縮。

然而,似乎是兩個函數處理減壓是ZLIP提供不能夠滿足我的需求正是:

int uncompress (Bytef *dest, uLongf *destLen, const Bytef *source, uLong sourceLen); 

int gzread (gzFile file, voidp buf, unsigned len); 

第一個(解壓縮)要求我事先知道要解壓縮數據的長度正確分配足夠的內存用於存儲。在我的情況下,它是未知的。

另一方面,第二個(gzread)將文件作爲輸入,而不是內存緩衝區。

對於使用zlip或其他庫的「高效」內存解壓縮,您有什麼建議?

謝謝。

+0

是不是gzip壓縮的二進制格式的數據?然後'stringstream'不是一個很好的選擇來存儲數據,除非你編碼它,因此它可以存儲爲非'char'值。原因是'stringstream'期望它的數據是字符串,並且字符串被終止爲零,這是有效的二進制數據。 –

回答