簡體   English   中英

錯誤:初始化時無法將'std :: string'轉換為'char *'

[英]error: cannot convert ‘std::string’ to ‘char*’ in initialization

我有從網頁下載匯率的python腳本,我想從中制作c ++程序,這是我到目前為止的內容:

include iostream
include time.h
include stdio.h
include curl/curl.h
include curl/easy.h
include string
define CURL_STATICLIB

using namespace std;

void dat(string &d){
    time_t rawtime;
    struct tm * timeinfo;
    char datum[80];
    time ( &rawtime );
    timeinfo=localtime(&rawtime);
    strftime(datum,80,"%d%m%y",timeinfo);
    d=datum;
}

size_t write_data(void *ptr, size_t size, size_t nmemb, FILE *stream) {
    size_t written;
    written = fwrite(ptr, size, nmemb, stream);
    return written;
}


int main()
{
    string f;
    dat(f);
    string l1="http://www.hnb.hr/tecajn/f";
    string l2=".dat";
    string linkz=l1+f+l2;
    cout << linkz;

    CURL *curl;
    FILE *fp;
    CURLcode res;
    char *url = linkz;
    char outfilename[FILENAME_MAX] = "/home/tomi/data.txt";
    curl = curl_easy_init();
    if (curl) {
        fp = fopen(outfilename,"wb");
        curl_easy_setopt(curl, CURLOPT_URL, url);
        curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_data);
        curl_easy_setopt(curl, CURLOPT_WRITEDATA, fp);
        res = curl_easy_perform(curl);
        curl_easy_cleanup(curl);
        fclose(fp);


    return 0;
}

當我嘗試編譯時,它給了我這個錯誤,我發現使用algorythm來下載txt,所以我希望它是正確的

如果您已經指出發生錯誤的那一行,那么我就不必追溯到:

string linkz=l1+f+l2;
...
char *url = linkz;

您可以使用c_str()獲取指向字符串中const字符的指針。 這樣就可以了:

char const* url = linkz.c_str();

您可以在setopt調用中使用同一行,或者將url設置為std::string

char *url = linkz; 應該是const char* url = linkz.c_str(); 假設出於API原因您確實需要C樣式的字符串。

問題在這一行:

char *url = linkz;

“鏈接”是std :: string,但是“ url”是char *。 嘗試使用string的c_str方法來獲得所需的內容,如下所示:

const char * url = links.c_str();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM