gpt4 book ai didi

c++ - 为什么我不能将 std::string 与 libcurl 一起使用?

转载 作者:太空宇宙 更新时间:2023-11-04 14:00:59 25 4
gpt4 key购买 nike

我正在尝试制作一个请求几页的非常简单的程序,这是我目前的代码:

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,但没有任何反应,它只是跳过 curl 函数,打印 url 并暂停。
如果我注释掉 thar 行,并取消注释“char const chFUrl[]...”,一切正常,并且 curl 将 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] 也很难得到“:”。

最佳答案

您的第三个代码段有问题。 sizeof(chFUrl) 将返回 sizeof 指针。它是 const char* 而不是 const char 数组。您应该将其替换为 fUrl.size() 以使其正确。

关于c++ - 为什么我不能将 std::string 与 libcurl 一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19303625/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com