c++ と libzip ライブラリを使用して実行可能ファイルを解凍しようとしています。同様の質問に対するrodrigoの回答から始めて、次のサンプルコードにたどり着きました。
#include <zip.h>
int main()
{
//Open the ZIP archive
int err = 0;
zip *z = zip_open("foo.zip", 0, &err);
//Search for the file of given name
const char *name = "file.txt";
struct zip_stat st;
zip_stat_init(&st);
zip_stat(z, name, 0, &st);
//Alloc memory for its uncompressed contents
char *contents = new char[st.size];
//Read the compressed file
zip_file *f = zip_fopen(z, "file.txt", 0);
zip_fread(f, contents, st.size);
zip_fclose(f);
//And close the archive
zip_close(z);
}
私が理解していることから、このコードはファイルを解凍するために機能しますが、winzip のようなツールを使用して zip ファイルを抽出するのと同じように、そのファイルをディスクに書き込む方法がわかりません。解凍されたデータをメモリに保存しても役に立ちませんが、ファイルを実際にディスクに保存する方法がわかりません。