libcurl返回错误3:使用std :: string变量时,URL使用错误/非法格式或缺少URL

时间:2018-08-11 16:33:55

标签: c++ get libcurl

我正在使用libcurl,并遵循libcurl网站上的简单https GET tutorial

当我在设置CURLOPT_URL选项时对网站URL进行硬编码时,请求有效:

curl_easy_setopt(curl, CURLOPT_URL, "https://www.google.com/");
result = curl_easy_perform(curl);
if (CURLE_OK != result)
{ 
    fprintf(stderr, "HTTP REQ failed: %s\n", curl_easy_strerror(result));
}

但是,当我将URL放入std :: string并将字符串用作输入时,它不再起作用:

std::string url("https://www.google.com/");
curl_easy_setopt(curl, CURLOPT_URL, url);
result = curl_easy_perform(curl);
if (CURLE_OK != result)
{
    fprintf(stderr, "HTTP REQ failed: %s\n", curl_easy_strerror(result));
}

然后请求返回,错误代码为3(CURLE_URL_MALFORMAT),错误消息为:

  

URL使用错误/非法格式或缺少URL

当我直接对URL进行硬编码但不能使用std :: string时不能正常工作时,我在这里缺少什么?

1 个答案:

答案 0 :(得分:2)

Curl是一个C库。它需要C字符串(const char *不是 C ++ std::string对象。

您想要curl_easy_setopt(curl, CURLOPT_URL, url.c_str());