c++ curl 下载文件代码
时间: 2024-08-31 15:01:22 浏览: 98
在 C++ 中使用 libcurl 下载文件通常涉及以下几个步骤。首先,你需要包含必要的库头文件,并初始化 libcurl。这里是一个简单的示例:
```cpp
#include <curl/curl.h>
#include <iostream>
size_t write_callback(char* ptr, size_t size, size_t nmemb, void* userdata) {
// 这里将数据写入到文件流
FILE* file = (FILE*)userdata;
return fwrite(ptr, size, nmemb, file);
}
void download_file(const char* url, const char* filename) {
CURL *curl;
CURLcode res;
// 初始化curl会话
curl_global_init(CURL_GLOBAL_DEFAULT);
// 创建并初始化curl指针
curl = curl_easy_init();
if(curl) {
// 设置下载URL
curl_easy_setopt(curl, CURLOPT_URL, url);
// 打开本地文件准备写入
FILE* outputFile = fopen(filename, "wb");
if(outputFile == nullptr) {
std::cerr << "Failed to open output file." << std::endl;
return;
}
curl_easy_setopt(curl, CURLOPT_WRITEDATA, outputFile);
// 设置回调函数处理下载的数据
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_callback);
// 开始下载
res = curl_easy_perform(curl);
if(res != CURLE_OK) {
std::cerr << "Error downloading file: " << curl_easy_strerror(res) << std::endl;
}
// 关闭文件和清理资源
fclose(outputFile);
curl_easy_cleanup(curl);
}
// 清理libcurl全局环境
curl_global_cleanup();
}
int main() {
std::string url = "http://example.com/file.zip";
std::string save_path = "file.zip"; // 想要保存的文件名
try {
download_file(url.c_str(), save_path.c_str());
std::cout << "Download completed successfully." << std::endl;
} catch(...) {
std::cerr << "An error occurred during the download." << std::endl;
}
return 0;
}
```
阅读全文