मुझे लगता है कि आप (this देखें) CURLOPT_WRITEFUNCTION
के माध्यम से एक लिखने कॉलबैक के रूप में पारित करने के लिए एक समारोह लिखने के लिए होगा। वैकल्पिक रूप से आप एक अस्थायी फ़ाइल बना सकते हैं और CURLOPT_WRITEDATA
(उस पृष्ठ पर सूचीबद्ध अगला विकल्प) के माध्यम से अपनी फ़ाइल डिस्क्रिप्टर पास कर सकते हैं। फिर आप अस्थायी फ़ाइल से डेटा को स्ट्रिंग में वापस पढ़ लेंगे। समाधानों का सबसे सुंदर नहीं है, लेकिन कम से कम आपको बफर और फ़ंक्शन पॉइंटर्स के साथ गड़बड़ नहीं करना है।
संपादित: चूंकि आप एक फ़ाइल पर लिखने में नहीं करना चाहते, कुछ इस तरह काम कर सकते हैं:
#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;
}
अस्वीकरण: मैं इस परीक्षण नहीं किया है, और मैं थोड़ा हूँ सी ++ पर जंगली, लेकिन आप इसे आजमा सकते हैं।
स्रोत
2010-03-04 04:35:48
मैं पहले से ही उस लिंक में था लेकिन मुझे समझ में नहीं आया कि पॉइंटर्स और सभी के साथ यह कैसे करना है। और फ़ाइल की बात मेरे लिए अच्छा नहीं है, क्योंकि मेरे पास थोड़ी सी मात्रा है और मुझे इसे बहुत तेज होने की आवश्यकता है .. – shaimagz
मैं आपको दोष नहीं देता हूं। मेरा संपादन देखें। –
मेरे लिए काम करता है। मैं string_to_string में अंतिम पैरामीटर प्रकार के रूप में स्ट्रिंग * का उपयोग करता हूं, यह मुझे एक कास्टिंग बचाता है। – Synox