16

これは私のコードです:

#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 |警告:非PODタイプのオブジェクトを通過させることはできませ'struct std::string''...'。呼び出しは実行時に中止されます

4

2 に答える 2

23

あなたが持っている問題は、可変引数関数がを含む非PODタイプでは機能しないことですstd::string。これはシステムの制限であり、変更することはできません。一方、できることは、PODタイプ(特にヌル終了文字配列へのポインター)を渡すようにコードを変更することです。

curl_easy_setopt(curl, CURLOPT_URL, url.c_str());
于 2012-05-04T00:03:10.767 に答える
11

警告が示すように、std::stringはPODタイプではなく、可変個引数引数関数(つまり、引数を持つ関数)を呼び出すときにPODタイプが必要です...

ただし、ここでchar const*は適切です。変化する

curl_easy_setopt(curl, CURLOPT_URL, url);

curl_easy_setopt(curl, CURLOPT_URL, url.c_str());
于 2012-05-04T00:02:29.580 に答える