나는 당신이 (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;
}
부인이 : :이 테스트를하지 않은, 나는 조금 해요 당신이 파일에 기록하지 않기 때문에, 이런 식으로 뭔가를 작동 할 수 있습니다 녹슨 C + +,하지만 당신은 그것을 밖으로 시도 할 수 있습니다.
나는 이미 그 링크에 있었지만 포인터와 함께 그 방법을 이해할 수 없었다. 파일 내용이 저에게 좋지 않습니다. 왜냐하면 데이터 량이 적기 때문에 매우 빠릅니다. – shaimagz
나는 당신을 비난하지 않습니다. 내 편집을 참조하십시오. –
이 저에게 효과적입니다. write_to_string에서 마지막 매개 변수 유형으로 string *을 사용하면 캐스팅이 절약됩니다. – Synox