gpt4 book ai didi

c++ - 在 C++ 中,我在使用队列和 libcurl 时遇到错误

转载 作者:太空宇宙 更新时间:2023-11-04 15:47:34 25 4
gpt4 key购买 nike

我正在使用 C++ 和 libcurl 制作 Web Spider。我遇到了一个问题,当我使用队列获取 URL 时,我收到一条错误消息,指出不支持 HTTP。错误是:http://google.com* Protocol "http not supported or disabled in libcurl* Unsupported protocol。这是我的代码:

#include <iostream>
#include <queue>
#include <curl/curl.h>

std::string data; //will hold the url's contents

size_t writeCallback(char* buf, size_t size, size_t nmemb, void* up)
{ //callback must have this declaration
//buf is a pointer to the data that curl has for us
//size*nmemb is the size of the buffer

for (int c = 0; c<size*nmemb; c++)
{
data.push_back(buf[c]);
}
return size*nmemb; //tell curl how many bytes we handled
}


int main(int argc, const char * argv[])
{
std::queue<std::string> Q;
Q.push("http://google.com");

while (!Q.empty()) {
std::string url = Q.front();
std::cout << Q.front();
CURL* curl; //our curl object

curl_global_init(CURL_GLOBAL_ALL); //pretty obvious
curl = curl_easy_init();

curl_easy_setopt(curl, CURLOPT_URL, &url);
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, &writeCallback);
curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L); //tell curl to output its progress

curl_easy_perform(curl);

std::cout << std::endl << data << std::endl;
std::cin.get();

curl_easy_cleanup(curl);
curl_global_cleanup();
data.erase();
Q.pop();
}

return 0;
}

我是 C++ 新手。我应该从哪个方向寻找解决方法?

最佳答案

std::string不是 char*。你不能说

curl_easy_setopt(curl, CURLOPT_URL, &url);

因为这给出了 std::string* 作为选项而不是 char*。正确的方法是

curl_easy_setopt(curl, CURLOPT_URL, url.c_str());

关于c++ - 在 C++ 中,我在使用队列和 libcurl 时遇到错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14114487/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com