2014-02-17 60 views
0

我有一些數據在陣列中,C/C++:壓縮(GZ)的數據,而無需使用臨時文件

uchar *data = "Data to be compressed."; [Some data] 

欲壓縮(GZ)該數據,並在緩衝器中得到輸出。要做到這一點

uchar gzData[MAX_LEN]; 

一種方法是:

1. Creating a `ogzstream` object. 
2. Writing this data into a temporary file 
3. close the temporary file. 
3. Create a `ifstream` object. 
4. Read the temporary file into buffer using ifstream object . 

但我不希望,因爲它明顯放緩,整個過程使用的臨時文件這一點。

是否有任何直接的方法來壓縮此數據而不使用任何中間文件?

+0

你意識到你正在創建的是一個流而不是一個文件?這裏有文件系統交互。 – niklasfi

回答

0

您可以使用過濾streambuf來即時執行此操作。這很容易做到,但Boost :: Iostreams已經爲您完成了一個。

+0

我不知道「助力」。 :(你可以給我一個鏈接到一些教程/例子相同嗎? – techbull

+0

std :: stringstream? –

+0

你可以從www.boost.org開始。他們有很多庫,它們往往過度通用(因此過於複雜),但取決於你在做什麼,有些可以是非常有用的。 –

相關問題