Ich denke, dass Sie eine Funktion schreiben als ein Schreib Rückruf passieren über CURLOPT_WRITEFUNCTION
(siehe this). Alternativ können Sie eine temporäre Datei erstellen und den Dateideskriptor über CURLOPT_WRITEDATA
(die nächste auf dieser Seite aufgelistete Option) übergeben. Dann würden Sie die Daten aus der temporären Datei in eine Zeichenfolge zurücklesen. Nicht die schönsten Lösungen, aber zumindest müssen Sie sich nicht mit Puffern und Funktionszeigern herumärgern.
EDIT: Da Sie nicht in eine Datei schreiben wollen, so etwas wie dies funktionieren könnte:
#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;
}
HAFTUNGSAUSSCHLUSS: Ich kann das nicht getestet haben, und ich bin ein bisschen Rusty auf C++, aber Sie können es ausprobieren.
Ich war bereits in diesem Link, aber ich konnte nicht verstehen, wie man das macht, mit den Zeigern und allem. und die Datei ist nicht gut für mich, weil ich eine kleine Menge von Daten habe und ich brauche es sehr schnell .. – shaimagz
Ich mache dir keine Vorwürfe. Siehe meine Bearbeitung. –
funktioniert für mich. Ich benutze string * als letzten Parametertyp in write_to_string, das spart mir ein Casting. – Synox