C++ 使用cURL下载文件的简单方法

C++ 使用cURL下载文件的简单方法,c++,macos,curl,download,C++,Macos,Curl,Download,在我的程序中,我想下载一些文件。因此,我采用了cURL并使用了以下代码(从这里进行了一些修改): 但什么也没发生,我的桌面上也没有任何文件:-/ 我的代码有什么问题? 或者如果你有一个简单的函数可以使用,你能给我一个吗 谢谢 检查下面的代码 #include <cstdio> #include <curl/curl.h> #include <curl/types.h> #include <curl/easy.h> #include <stri

在我的程序中,我想下载一些文件。因此,我采用了cURL并使用了以下代码(从这里进行了一些修改):

但什么也没发生,我的桌面上也没有任何文件:-/

我的代码有什么问题? 或者如果你有一个简单的函数可以使用,你能给我一个吗

谢谢

检查下面的代码

#include <cstdio>
#include <curl/curl.h>
#include <curl/types.h>
#include <curl/easy.h>
#include <string>



using namespace std;

size_t write_data(void *ptr, size_t size, size_t nmemb, FILE *stream) {
    size_t written;
    written = fwrite(ptr, size, nmemb, stream);
    return written;
}

int main(){
    CURL *curl;
    FILE *fp;
    CURLcode res;
    string url = "http://www.joes-hardware.com/tools.html";
    char outfilename[FILENAME_MAX] = "./MyText.txt";
    curl = curl_easy_init();
    if (curl) {
        fp = fopen(outfilename,"wb");
        curl_easy_setopt(curl, CURLOPT_URL, url.c_str());
        curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_data);
        curl_easy_setopt(curl, CURLOPT_WRITEDATA, fp);
        res = curl_easy_perform(curl);
        curl_easy_cleanup(curl);
        fclose(fp);
    }
    return 0;
}
#包括
#包括
#包括
#包括
#包括
使用名称空间std;
大小写入数据(void*ptr、大小、大小nmemb、文件*流){
书写的大小;
写入=写入(ptr、大小、nmemb、流);
书面回报;
}
int main(){
卷曲*卷曲;
文件*fp;
卷曲编码;
字符串url=”http://www.joes-hardware.com/tools.html";
char outfilename[FILENAME_MAX]=“/MyText.txt”;
curl=curl_easy_init();
if(curl){
fp=fopen(出口名称,“wb”);
curl_easy_setopt(curl,CURLOPT_URL,URL.c_str());
curl\u easy\u setopt(curl,CURLOPT\u WRITEFUNCTION,write\u data);
curl_easy_setopt(curl,CURLOPT_WRITEDATA,fp);
res=旋度(curl)\u容易执行(curl);
旋度\轻松\清洁(旋度);
fclose(fp);
}
返回0;
}
它很好用。
问题是-此代码无法使用
https
,因此当您在浏览器中打开并通过上述代码提供的
url
时,会产生单独的响应。

在项目目录(或可执行文件所在地)中查找目录用户。是否存在?为了简洁起见,该示例省略了错误处理。你需要自己做。这就是它的工作原理
#include <cstdio>
#include <curl/curl.h>
#include <curl/types.h>
#include <curl/easy.h>
#include <string>



using namespace std;

size_t write_data(void *ptr, size_t size, size_t nmemb, FILE *stream) {
    size_t written;
    written = fwrite(ptr, size, nmemb, stream);
    return written;
}

int main(){
    CURL *curl;
    FILE *fp;
    CURLcode res;
    string url = "http://www.joes-hardware.com/tools.html";
    char outfilename[FILENAME_MAX] = "./MyText.txt";
    curl = curl_easy_init();
    if (curl) {
        fp = fopen(outfilename,"wb");
        curl_easy_setopt(curl, CURLOPT_URL, url.c_str());
        curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_data);
        curl_easy_setopt(curl, CURLOPT_WRITEDATA, fp);
        res = curl_easy_perform(curl);
        curl_easy_cleanup(curl);
        fclose(fp);
    }
    return 0;
}