これは私のコードです:
#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'
使って'...'
;呼び出しは実行時に中止されます
あなたが抱えている問題は、可変引数関数がstd::string
を含む非PODタイプでは機能しないことです。これはシステムの制限であり、変更することはできません。一方、できることは、PODタイプ(特にヌル終了文字配列へのポインター)を渡すようにコードを変更することです。
curl_easy_setopt(curl, CURLOPT_URL, url.c_str());
警告が示すように、std::string
はPODタイプではなく、可変個引数関数(つまり、...
引数を持つ関数)を呼び出す場合はPODタイプが必要です。
ただし、ここではchar const*
が適切です。変化する
curl_easy_setopt(curl, CURLOPT_URL, url);
に
curl_easy_setopt(curl, CURLOPT_URL, url.c_str());