我想在POST curl中使用动态变量
我使用以下代码:
int send(const char*s)
{
CURL *curl;
CURLcode res;
curl_global_init(CURL_GLOBAL_ALL);
curl = curl_easy_init();
if(curl) {
curl_easy_setopt(curl, CURLOPT_URL, "http://localhost/query.php");
curl_easy_setopt(curl, CURLOPT_POSTFIELDS, "q=" + s);
res = curl_easy_perform(curl);
if(res != CURLE_OK)
fprintf(stderr, "curl_easy_perform() failed: %s\n",
curl_easy_strerror(res));
curl_easy_cleanup(curl);
}
curl_global_cleanup();
std::cout << std::endl << "Query sent" << std::endl;
return 0;
}
我得到这个错误:
test.cpp:199:57: error: invalid operands of types ‘const char [3]’ and ‘const char*’ to binary ‘operator+’
curl_easy_setopt(curl, CURLOPT_POSTFIELDS, "q=" + s);
~~~~~^~~
最佳答案
您必须自己连接"q="
和s
,Cpp中没有运算符+
将chars数组与指向chars的指针连接在一起。使用"q="
创建字符串,将s
指向的数据添加到此字符串,然后调用c_str()
以获取const char*
指针作为curl_easy_setopt函数的参数:
#include <string>
....
curl_easy_setopt(curl, CURLOPT_URL, "http://localhost/query.php");
std::string buf("q=");
buf += s;
curl_easy_setopt(curl, CURLOPT_POSTFIELDS, buf.c_str());