我想获取页面的源代码,我有这个函数来填充字符串。
我的标题文件:
class Explorateur {
public:
Explorateur();
~Explorateur();
std::string RecupererCodeSource(std::string pAdresse);
static size_t WriteCallback(void *contents, size_t size, size_t nmemb, void *userp)
{
((std::string*)userp)->append((char*)contents, size * nmemb);
return size * nmemb;
}
};
我的班级档案:
std::string Explorateur::RecupererCodeSource(std::string pAdresse)
{
CURL *curl;
CURLcode res;
std::string readBuffer;
curl = curl_easy_init();
if(curl)
{
curl_easy_setopt(curl, CURLOPT_URL, pAdresse);
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, WriteCallback);
curl_easy_setopt(curl, CURLOPT_WRITEDATA, &readBuffer);
std::cout << "curl : " << curl << std::endl;
res = curl_easy_perform(curl);
std::cout << "res : " << res << std::endl;
curl_easy_cleanup(curl);
}
std::cout << "Read : " << readBuffer << std::endl;
return readBuffer;
}
我的主要人物:
int main()
{
Explorateur explorateur;
std::string valeur = explorateur.RecupererCodeSource("https://www.google.com/");
return 0;
}
结果不是例外,它是空的,你知道为什么吗?
curl : 0x1450d60
res : 6
Read :
答案 0 :(得分:1)
具有
CURLcode curl_easy_setopt(CURL *curl, CURLoption option, ...)
并在您的代码中
curl_easy_setopt(curl, CURLOPT_URL, pAdresse);
产生你正在目睹的行为。
将代码更改为此
curl_easy_setopt(curl, CURLOPT_URL, pAdresse.c_str());
甚至更好,如果你使用C ++&gt; = 11
curl_easy_setopt(curl, CURLOPT_URL, pAdresse.data());
它还活着))。