Согласно документации , стандартное поведение libcurl - записать ответ на stdout
, используя fwrite
.
. Вам нужно будет переопределить CURLOPT_WRITEFUNCTION
следующим образом:
size_t my_write_callback(char *ptr, size_t size, size_t nmemb, void *userdata) {
cout << "Received " << nmemb << " bytes" << endl;
return nmemb;
}
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, my_write_callback);
Вы можете управлять значением userdata
, изменяя CURLOPT_WRITEDATA , по умолчанию оно равно stdout
.
EDIT: простой примеркоторый использует std::string
в качестве буфера памяти:
size_t my_write_callback(char *ptr, size_t size, size_t nmemb, void *userdata) {
static_cast<std::string*>(userdata)->append((char*) ptr, size * nmemb);
return nmemb;
}
std::string buf;
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, my_write_callback);
curl_easy_setopt(curl, CURLOPT_WRITEDATA, &buf);
curl_easy_perform(curl);
// do something with buf