1
我试图做一个非常简单的程序,申请了几页,在这里是到目前为止我的代码:为什么我不能在libcurl中使用std :: string?
string fUrl = "http://google.com/";
int main(int argc, char *argv[]) {
CURL *curl;
CURLcode res;
curl = curl_easy_init();
if (curl) {
char const* chFUrl = fUrl.c_str();
//char const chFUrl[] = "http://google.com/";
curl_easy_setopt(curl, CURLOPT_URL, chFUrl);
curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L);
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);
cout << chFUrl << endl;
system("pause");
}
return 0;
}
现在,我想帕萨特fUrl.c_str通知()卷曲,但没有任何反应,它只是跳过curl函数,打印url并暂停。
如果我注释掉塔尔线,并取消了“字符常量chFUrl [] ...”,一切工作只是罚款和卷曲的HTML输出响应到终端。
当我通过fUrl.c_str(运行),它不工作,没有打印上VS.控制台我对C++很少有经验,所以任何想法都是值得赞赏的。
- 编辑: 我刚刚测试此代码:
char const chFUrl[] = "http://google.com";
for (int i = 0; i < sizeof(chFUrl); i++) {
cout << chFUrl[i] << endl;
}
而且它的整个URL的终端输出,但是,当我使用这个:
char const* chFUrl = fUrl.c_str();
for (int i = 0; i < sizeof(chFUrl); i++) {
cout << chFUrl[i] << endl;
}
只输出“ http“,如果我选择chFUrl,那么就算是困难[4],我得到了”:“。
你试过声明和初始化'main'里面'fUrl'? –
综观[本文档](http://curl.haxx.se/libcurl/c/curl_easy_setopt.html)它说,第三个参数为'curl_easy_setopt()'“可以是一个长期的,函数指针,一个对象指针或curl_off_t“。你正在传递一个字符串。这可能是一个问题吗? –
请提供**完整的**示例程序,以便我们可以重现您的结果。有关更多信息,请参阅http://SSCCE.ORG。 –