gpt4 book ai didi

c++ - 将 curl 函数的输出保存到 c++ 中的 vector

转载 作者:搜寻专家 更新时间:2023-10-31 01:58:20 26 4
gpt4 key购买 nike

正如我的标题所说,我想将 curl 执行的输出保存到 vector 中。任何人都可以给我一个示例代码吗?我能够将它保存到 c 中的结构中。但我想将它保存到一个 vector 中,在 C++ 中也是如此,我对 C++ 有点不适应。

    vector<string> contents;

size_t handle_data(void *ptr, size_t size, size_t nmemb, void *stream)
{
int numbytes = size*nmemb;
char lastchar = *((char *) ptr + numbytes - 1);
*((char *) ptr + numbytes - 1) = '\0';
contents.push_back((char *)ptr);
*((char *) ptr + numbytes - 1) = lastchar; // Might not be necessary.
return size*nmemb;
}



int main(int argc, char *argv[])
{

vector<string>::iterator i;

CURL* curl = curl_easy_init();
if(curl)
{
curl_easy_setopt(curl,CURLOPT_URL, argv[1]);
curl_easy_setopt(curl,CURLOPT_WRITEFUNCTION,handle_data);
CURLcode res = curl_easy_perform(curl);
curl_easy_cleanup(curl);
if (res == 0){
for(i=contents.begin();i!=contents.end();i++)
cout << *i << endl;
}else
cerr << "Error: " << res << endl;
}
return 0;
}

最佳答案

我不知道 curl,所以我假设设置代码是正确的。所以你想要的是回调函数,为接收到的每个数据 block 添加一个字符串到字符串 vector 。这也假设返回的数据是 8 位字符。

vector<string> contents;

size_t handle_data(void *ptr, size_t size, size_t nmemb, void *stream)
{
contents.push_back(string(static_cast<const char*>(ptr), size * nmemb));
return size * nmemb;
}

对 string() 的“调用”实际上构造了一个用指针和数据长度初始化的字符串对象。

关于c++ - 将 curl 函数的输出保存到 c++ 中的 vector<string>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4214814/

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