91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C++解壓庫使用案例

發布時間:2024-10-30 14:10:46 來源:億速云 閱讀:81 作者:小樊 欄目:編程語言

在C++中,我們可以使用第三方庫來處理ZIP文件

首先,確保已經安裝了minizip庫。接下來,我們將創建一個簡單的C++程序來解壓縮一個ZIP文件。

#include <iostream>
#include <fstream>
#include <vector>
#include <string>
#include "minizip/unzip.h"
#include "minizip/zip.h"

void UnzipFile(const std::string& zipFilePath, const std::string& outputDir) {
    unzFile uf = unzOpen(zipFilePath.c_str());
    if (uf == nullptr) {
        std::cerr << "Error opening ZIP file: " << zipFilePath << std::endl;
        return;
    }

    int ret;
    char buffer[4096];
    unz_global_info gi;
    ret = unzGetGlobalInfo(uf, &gi);
    if (ret != UNZ_OK) {
        std::cerr << "Error getting global info: " << zipFilePath << std::endl;
        unzClose(uf);
        return;
    }

    std::vector< unz_file_info> file_info(gi.number_entry);
    ret = unzGetInfoArray(uf, file_info.data(), gi.number_entry);
    if (ret != UNZ_OK) {
        std::cerr << "Error getting file info array: " << zipFilePath << std::endl;
        unzClose(uf);
        return;
    }

    for (size_t i = 0; i < gi.number_entry; ++i) {
        unz_file_info fi = file_info[i];
        std::string filename(fi.filename);
        std::string fullpath = outputDir + "/" + filename;

        if (fi.uncompressed_size > 0) {
            std::ofstream outputFile(fullpath, std::ios::binary);
            if (!outputFile) {
                std::cerr << "Error creating output file: " << fullpath << std::endl;
                continue;
            }

            char* buffer = new char[fi.uncompressed_size];
            ret = unzReadCurrentFile(uf, buffer, fi.uncompressed_size);
            if (ret != UNZ_OK) {
                std::cerr << "Error reading file: " << filename << std::endl;
                delete[] buffer;
                continue;
            }

            outputFile.write(buffer, fi.uncompressed_size);
            delete[] buffer;

            if (!outputFile) {
                std::cerr << "Error writing to output file: " << fullpath << std::endl;
            }
        } else {
            std::ifstream inputFile(fullpath, std::ios::binary);
            if (!inputFile) {
                std::cerr << "Error opening existing file: " << fullpath << std::endl;
                continue;
            }

            inputFile.close();
        }
    }

    unzClose(uf);
}

int main() {
    std::string zipFilePath = "example.zip";
    std::string outputDir = "output";

    UnzipFile(zipFilePath, outputDir);

    std::cout << "Unzip completed!" << std::endl;

    return 0;
}

在這個示例中,我們定義了一個名為UnzipFile的函數,它接受一個ZIP文件路徑和一個輸出目錄作為參數。我們使用minizip庫打開ZIP文件,獲取文件信息,然后遍歷所有文件并將它們解壓縮到指定的輸出目錄。

main函數中,我們調用UnzipFile函數來解壓縮一個名為example.zip的文件,并將解壓縮的文件保存到名為output的目錄中。

要編譯這個程序,請確保鏈接minizip庫。例如,使用g++編譯器,你可以這樣編譯:

g++ -o unzip_example example.cpp -lminizip -lz

然后運行生成的可執行文件:

./unzip_example

這將解壓縮example.zip文件并將解壓縮的文件保存到output目錄中。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

c++
AI

渑池县| 岳阳县| 永济市| 民丰县| 榆树市| 原平市| 顺义区| 垣曲县| 南充市| 怀宁县| 新巴尔虎左旗| 扎赉特旗| 九龙城区| 米易县| 双辽市| 沅陵县| 灌云县| 张掖市| 乡宁县| 始兴县| 隆德县| 抚宁县| 安吉县| 青阳县| 荥经县| 同仁县| 鄂托克前旗| 靖江市| 霞浦县| 土默特左旗| 乌拉特中旗| 嘉兴市| 双江| 电白县| 宿迁市| 新竹市| 渭源县| 那曲县| 高邮市| 同仁县| 阜新市|