zlibでデータを圧縮/解凍するには、まずz_stream
という構造体を設定する必要があります。 z_stream
には、next_in
とnext_out
という2つの非constポインタがあります。C++ - constデータでzlibを使用する
私はこのような機能を実行する場合:私は何をすべき
void ungzip(std::vector<unsigned char>& dst,const std::vector<unsigned char>& src)
{
z_stream strm;
// more code
}
およびその他のような、
void gzip (std::vector<unsigned char>& dst,const std::vector<unsigned char>& src);
?
コピーローカルstd::vector<unsigned char>
std::vector<unsigned char> tmp(src);
でsrcと、strm.next_in = const_cast<char*>(&src[0])
このようなソースや設定のポインタとしてそれを使うのか?
zlibは入力データを保持しますか?
私はイテレータを使って入力を受け付けることをお勧めします:このデザインでは、呼び出し側が 'vector 'にデータを格納するように制限します。 –
zlibは入力データに触れません。それは 'const'であるかのように扱われます。 'next_in'はデフォルトでは' const'ではありません。多くのアプリケーションがzlibの外側で 'next_in'を使ってデータを読み込むためです。それを 'const'にすると、それらのアプリケーションが壊れるでしょう。 –