Я думаю, вам придется написать функцию для передачи в качестве обратного вызова записи через CURLOPT_WRITEFUNCTION
(см. this ).В качестве альтернативы вы можете создать временный файл и передать его файловый дескриптор через CURLOPT_WRITEDATA
(следующий параметр указан на этой странице).Затем вы читаете данные из временного файла в строку.Не самое красивое из решений, но по крайней мере вам не нужно связываться с буферами и указателями функций.
EDIT : поскольку вы не хотите записывать в файл, что-то вродеэто может сработать:
#include <string>
size_t write_to_string(void *ptr, size_t size, size_t count, void *stream) {
((string*)stream)->append((char*)ptr, 0, size*count);
return size*count;
}
int main(void) {
// ...
if (curl) {
curl_easy_setopt(curl, CURLOPT_URL, "http://www.browsarity.com/");
string response;
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_to_string);
curl_easy_setopt(curl, CURLOPT_WRITEDATA, &response);
res = curl_easy_perform(curl);
curl_easy_cleanup(curl);
// The "response" variable should now contain the contents of the HTTP response
}
return 0;
}
ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ : я не проверял это, и я немного заржавел на C ++, но вы можете попробовать его.