2012-03-04 15 views
2

私は、zlibで圧縮された(収縮した)データを含むベクトルを持っています。 Boostのfiltering_istreamで解凍したいと思います。彼らのサイトには、(私が持っているベクトルとは対照的に)データのストリーム上で動作する1つの例しかありません。どのようにしてBoostで収縮したデータのベクトルを解凍できますか?

vector<char> compressed_buffer; 
compressed_buffer.resize(cdh.length); 
file.read(&compressed_buffer[0], cdh.length); 

filtering_istream in; 
in.push(zlib_decompressor()); 
in.push(something(compressed_data)); // what should "something" be? 

非圧縮データもベクトルとして取得したいと考えています。これどうやってするの?

答えて

3

array_sourceについてはどうですか?

in.push(array_source(&*compressed_data.begin(), &*compressed_data.end())); 

次に、新しいベクタに結果の文字をプッシュするstd::insert_iteratorboost::iostreams::copyを使用しています。

+0

ありがとう、それは大きく働いた。今後の参考として、std :: back_inserterでinster_iteratorを構築しました。 –

+0

@TamásSzelei:右の音について:) –

関連する問題