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

溫馨提示×

溫馨提示×

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

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

C++解壓與文件復制

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

你好!我很高興能幫助你。在C++中,解壓文件和復制文件是兩個不同的任務。我將分別為你解釋這兩個任務的實現方法。

  1. 解壓文件

解壓文件通常意味著將壓縮文件中的內容提取到目標目錄。為了實現這個功能,你可以使用第三方庫,如minizipzlib。這里是一個使用minizip庫解壓ZIP文件的示例:

#include <iostream>
#include <fstream>
#include <vector>
#include <zip.h>
#include <unzip.h>

bool unzip(const std::string& zipFilePath, const std::string& destDirectory) {
    unzFile uf = unzOpen(zipFilePath.c_str());
    if (uf == nullptr) {
        std::cerr << "Error opening zip file: " << zipFilePath << std::endl;
        return false;
    }

    int ret = unzGoToFirstFile(uf);
    while (ret == UNZ_OK) {
        char filePath[256];
        unzGetCurrentFileInfo(uf, nullptr, nullptr, filePath, sizeof(filePath));
        std::string destPath = destDirectory + "/" + filePath;

        if (unzOpenCurrentFile(uf) != UNZ_OK) {
            std::cerr << "Error opening file: " << filePath << std::endl;
            unzClose(uf);
            return false;
        }

        std::ofstream outputFile(destPath, std::ios::binary);
        if (!outputFile) {
            std::cerr << "Error creating output file: " << destPath << std::endl;
            unzCloseCurrentFile(uf);
            unzClose(uf);
            return false;
        }

        std::vector<char> buffer(1024);
        int size;
        while ((size = unzReadCurrentFile(uf, buffer.data(), buffer.size())) > 0) {
            outputFile.write(buffer.data(), size);
        }

        outputFile.close();
        unzCloseCurrentFile(uf);
        ret = unzGoToNextFile(uf);
    }

    unzClose(uf);
    return true;
}

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

    if (unzip(zipFilePath, destDirectory)) {
        std::cout << "Unzip completed successfully." << std::endl;
    } else {
        std::cerr << "Unzip failed." << std::endl;
    }

    return 0;
}
  1. 復制文件

復制文件是將一個文件的內容復制到另一個文件。你可以使用C++的<fstream>庫來實現這個功能。以下是一個簡單的示例:

#include <iostream>
#include <fstream>

bool copyFile(const std::string& srcFilePath, const std::string& destFilePath) {
    std::ifstream srcFile(srcFilePath, std::ios::binary);
    if (!srcFile) {
        std::cerr << "Error opening source file: " << srcFilePath << std::endl;
        return false;
    }

    std::ofstream destFile(destFilePath, std::ios::binary);
    if (!destFile) {
        std::cerr << "Error opening destination file: " << destFilePath << std::endl;
        srcFile.close();
        return false;
    }

    destFile << srcFile.rdbuf();
    srcFile.close();
    destFile.close();

    return true;
}

int main() {
    std::string srcFilePath = "source.txt";
    std::string destFilePath = "destination.txt";

    if (copyFile(srcFilePath, destFilePath)) {
        std::cout << "File copied successfully." << std::endl;
    } else {
        std::cerr << "File copy failed." << std::endl;
    }

    return 0;
}

這兩個示例分別展示了如何在C++中解壓ZIP文件和復制文件。如果你需要執行其他類型的壓縮或文件操作,請告訴我,我會為你提供更多幫助。

向AI問一下細節

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

c++
AI

冀州市| 历史| 武山县| 平度市| 龙州县| 乌拉特前旗| 师宗县| 丘北县| 牟定县| 达拉特旗| 承德市| 德阳市| 永靖县| 邯郸县| 安新县| 峡江县| 三河市| 翁源县| 伊金霍洛旗| 板桥市| 新宁县| 桐庐县| 蒙城县| 宜州市| 双鸭山市| 武穴市| 恩平市| 泰来县| 永靖县| 石狮市| 阳山县| 车险| 开原市| 大兴区| 闽侯县| 鄢陵县| 九江市| 连城县| 阿勒泰市| 叙永县| 保康县|