这没关系
FILE *outfile = fopen(resultPath.c_str(), "w");
curl_easy_setopt(curl, CURLOPT_WRITEDATA, outfile);
但我不想使用fopen(),因为我在其余的代码中使用了ofstream。 所以我尝试了这个:
ofstream outfile;
outfile.open(resultPath.c_str());
curl_easy_setopt(curl, CURLOPT_WRITEDATA, outfile.beg);
我不确定第三个参数是否正确,编译时是否显示错误,但程序在写入时崩溃。 那么这样做的正确方法是什么?
答案 0 :(得分:0)
该参数可以是long,函数指针,对象指针或 curl_off_t,具体取决于具体选项的期望。
答案 1 :(得分:0)
此函数的参数与CURLOPT_WRITEFUNCTION
有关。 CURLOPT_WRITEFUNCTION
采用类似size_t function( char *ptr, size_t size, size_t nmemb, void *userdata);
所以,如果我们假设你的写函数大致如下:
size_t write_data( char *ptr, size_t size, size_t nmemb, void *userdata);
{
ofstream& outstream = ???;
...
outstream.write(ptr, size * nmemb);
...
}
然后userdata
应该是您可以创建ofstream&
的内容。
我会传递outfile
的地址。
curl_easy_setopt(curl, CURLOPT_WRITEDATA, &outfile);
然后write_data函数变为:
size_t write_data( char *ptr, size_t size, size_t nmemb, void *userdata);
{
ofstream& outstream = *reinterpret_cast<ofstream*>(userdata);
...
outstream.write(ptr, size * nmemb);
...
}