Tôi nghĩ rằng bạn sẽ phải viết một chức năng để vượt qua như một ghi callback qua CURLOPT_WRITEFUNCTION
(xem this). Hoặc bạn có thể tạo một tệp tạm thời và chuyển bộ mô tả tệp qua CURLOPT_WRITEDATA
(tùy chọn tiếp theo được liệt kê trên trang đó). Sau đó, bạn sẽ đọc lại dữ liệu từ tệp tạm thời thành một chuỗi. Không phải là đẹp nhất của các giải pháp, nhưng ít nhất bạn không phải lộn xộn với bộ đệm và con trỏ hàm.
EDIT: Vì bạn không muốn viết vào một tập tin, một cái gì đó như thế này có thể làm việc:
#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;
}
SỰ TỪ BỎ: Tôi đã không kiểm tra này, và tôi là một chút gỉ trên C++, nhưng bạn có thể thử nó.
Nguồn
2010-03-04 04:35:48
Tôi đã ở trong liên kết đó nhưng tôi không thể hiểu cách thực hiện điều đó, với con trỏ và tất cả. và điều tập tin không tốt cho tôi, bởi vì tôi có một lượng nhỏ dữ liệu và tôi cần nó rất nhanh .. – shaimagz
Tôi không trách bạn. Xem chỉnh sửa của tôi. –
hoạt động cho tôi. tôi sử dụng chuỗi * như kiểu tham số cuối cùng trong write_to_string, điều này giúp tôi tiết kiệm một quá trình truyền. – Synox