代码之家  ›  专栏  ›  技术社区  ›  Julien

C++CURL后动态VaR

  •  0
  • Julien  · 技术社区  · 6 年前


    我使用此代码:

    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);
                                                        ~~~~~^~~
    
    1 回复  |  直到 6 年前
        1
  •  2
  •   rafix07    6 年前

    你必须连接 "q=" s 一个人,没有接线员 + 在cpp中,它将chars数组与指向chars的指针连接起来。创建字符串 “Q=” ,添加指向的数据 S 到这个字符串并调用 c_str() 得到 const char* 指针作为的参数 卷曲,易弯曲 功能:

    #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());