2010-12-07 50 views
0

我有一個使用捲曲的程序。和它的一部分看起來像這樣..幫助捲曲ERRORBUFFER

char* Error = NULL; 
Error = (char*)malloc(1024); 
memset(Error, 0, 1024); 
.............. 
    curl_easy_setopt(curl, CURLOPT_ERRORBUFFER, Error); 
    curl_easy_setopt(curl, CURLOPT_CONNECTTIMEOUT, 3); 
    if(CURLE_OK != curl_easy_perform(curl)){ 
     Error[1023] = '\0'; 
//  cout << "cURL returned: " << Error << endl; 
    } 
    curl_easy_cleanup(curl); 
    free(Error); 

,你可以看到我已經使用了錯誤緩衝區一個char * ...如何使用字符串而不是一個char *,因爲我已經有一個std ::名單<字符串>包含其他錯誤字符串...

即使沒有錯誤,COUT打印此搬上銀幕:

cURL returned: Failed writing body (442456 != 998) 

應該是什麼,如果要避免這種情況?

回答

2

您不能使用std :: string接收錯誤,因爲它沒有可寫緩衝區。

如果你想使用STL而不必處理數組的內存,你可以使用std :: vector。

const size_t errBufSize = 1024; 
std::vector<char> errBuf(errBufSize); 
curl_easy_setopt(curl, CURLOPT_ERRORBUFFER, &errBuf[0]); 

你實際的錯誤從代碼的其餘部分,例如,如果你通過它,你可能必須通過它的緩衝區大小太大的錯誤緩衝區可能來自。

我認爲「失敗的寫體」來自Curl_write_callback沒有返回傳遞給它的相同數量的字節。

+0

只是說明根據文檔而不是errBufSize應該使用CURL_ERROR_SIZE – arved 2015-01-12 16:19:53