gpt4 book ai didi

c++ - libcurl自动用换行+回车替换换行

转载 作者:行者123 更新时间:2023-11-30 02:37:28 26 4
gpt4 key购买 nike

如标题所述,在下载内容并保存 libcurl 时将所有 LF 替换为 LF + CR。这对文本文件很好。但对于二进制来说,这是一场灾难。我已经试过了

curl_easy_setopt(curl, CURLOPT_CRLF, 0L);

如何禁用这个东西。我在 Windows 和 curl 7.40.0 上运行

#include <iostream>
#include <curl/curl.h>

using namespace std;

CURL *curl;
CURLcode res;

size_t file_write_callback(char *ptr, size_t size, size_t nmemb, void *userdata)
{
fwrite(ptr,size,nmemb,(FILE *)userdata);
return nmemb;
}

int main(void)
{
FILE * pFile;
pFile = fopen ("myfile.png","w");

curl = curl_easy_init();
curl_easy_setopt(curl, CURLOPT_URL, "http://www.dilushan.tk/Media/128px_feed.png");
curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L);

if (pFile!=NULL)
{
curl_easy_setopt(curl, CURLOPT_WRITEDATA, pFile);
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, file_write_callback);
res = curl_easy_perform(curl);
}
fclose (pFile);
return 0;
}

最佳答案

libburl 不是罪魁祸首,但底层系统库才是。因为 Windows 具有不应发生转换的二进制文件的概念,以及行尾在磁盘上表示为 CrLf (\r\n) 且仅表示为 \n 的文本文件> 在 C 或 C++ 中。

修复非常简单:只需在 open 的模式字符串中使用 b(二进制):

pFile = fopen ("myfile.png","wb");

关于c++ - libcurl自动用换行+回车替换换行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31567457/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com