这是我的代码:
#include <iostream>
#include <fstream>
#include <cstdlib>
#include <stdio.h>
#include <curl/curl.h>
using namespace std;
int main ()
{
ifstream llfile;
llfile.open("C:/log.txt");
if(!llfile.is_open()){
exit(EXIT_FAILURE);
}
string word;
llfile >> word;
llfile.close();
string url = "http://example/auth.php?ll=" + word;
CURL *curl;
CURLcode res;
curl = curl_easy_init();
if(curl) {
curl_easy_setopt(curl, CURLOPT_URL, url);
res = curl_easy_perform(curl);
/* always cleanup */
curl_easy_cleanup(curl);
}
return 0;
}
编译时这是我的错误:
main.cpp | 29 |警告:无法通过
'struct std::string'
传递非POD类型'...'
的对象; call将在运行时中止
答案 0 :(得分:23)
您遇到的问题是变量参数函数不适用于非POD类型,包括std::string
。这是系统的限制,无法修改。另一方面,您可以更改代码以传递POD类型(特别是指向nul终止字符数组的指针):
curl_easy_setopt(curl, CURLOPT_URL, url.c_str());
答案 1 :(得分:11)
如警告所示,std::string
不是POD类型,并且在调用variadic-argument函数(即具有...
参数的函数)时需要POD类型。
但是,char const*
在这里是合适的;变化
curl_easy_setopt(curl, CURLOPT_URL, url);
到
curl_easy_setopt(curl, CURLOPT_URL, url.c_str());