当前位置: 首页 > news >正文

模拟curl的回调函数实现返回结构体

#include <iostream>
#include <vector>

// 自定义数据结构
struct MyData {
    int value1;
    int value2;
};

// 回调函数
size_t OnWriteData(void* buffer, size_t size, size_t nmemb, void* lpVoid) {
    std::vector<MyData>* dataVector = static_cast<std::vector<MyData>*>(lpVoid);
    if (dataVector == nullptr || buffer == nullptr) {
        return -1;
    }

    // 计算接收到的 MyData 结构体的数量
    size_t numStructs = size * nmemb / sizeof(MyData);
    MyData* dataPtr = static_cast<MyData*>(buffer);

    // 将接收到的 MyData 结构体添加到向量中
    for (size_t i = 0; i < numStructs; ++i) {
        dataVector->push_back(dataPtr[i]);
    }

    return nmemb;
}

int main() {
    // 模拟接收自定义数据结构数组
    MyData dataArray[] = {{1, 2}, {3, 4}, {5, 6}};
    size_t size = sizeof(MyData); // 每个数据单元大小为 sizeof(MyData)
    size_t nmemb = sizeof(dataArray) / sizeof(dataArray[0]);

    std::vector<MyData> receivedData;
    OnWriteData(dataArray, size, nmemb, &receivedData);

    // 输出接收到的数据
    for (const auto& data : receivedData) {
        std::cout << "Value1: " << data.value1 << ", Value2: " << data.value2 << std::endl;
    }

    return 0;
}
  • 把 lpVoid 转换为 std::vector<MyData>* 类型的指针,这样就能将接收到的 MyData 结构体存储到向量中。
  • 计算接收到的 MyData 结构体的数量,通过 size * nmemb / sizeof(MyData) 来实现。
  • 把接收到的 MyData 结构体逐个添加到向量中。

在main函数调用中,

  • 模拟了一个 MyData 结构体数组 dataArray
  • 调用 OnWriteData 函数来处理数据。
  • 输出接收到的 MyData 结构体的成员值。

相关文章:

  • 基于Spring Boot的ONLY在线商城系统设计与实现的设计与实现(LW+源码+讲解)
  • Ubuntu xinference部署本地模型bge-large-zh-v1.5、bge-reranker-v2-m3
  • Headless Chrome 优化:减少内存占用与提速技巧
  • c++随记
  • 糖尿病大模型预测及临床应用研究智能管理系统技术文档
  • 线段树SegmentTree
  • HTML5 Audio(音频)学习笔记
  • Elasticsearch客户端工具初探--kibana
  • PyTorch处理数据--Dataset和DataLoader
  • Springboot高版本适配人大金仓
  • qtcore在docker容器中运行
  • string 的接口
  • 有额外限制的 bellman_ford 算法
  • Docker技术全景解析
  • 串行通信 与 并行通信 对比
  • 3、实际常用命令【待补充】
  • rocketmq零拷贝技术底层实现
  • PgDog:一个PostgreSQL分布式集群中间件
  • 【前端常用函数】
  • 达梦改密码时不想看到明文
  • 七部门:进一步增强资本市场对于科技创新企业的支持力度
  • 习近平举行仪式欢迎巴西总统卢拉访华
  • 外媒:初步结果显示,菲律宾前总统杜特尔特当选达沃市市长
  • 世界期待中美对话合作带来更多确定性和稳定性
  • 《广州大典研究》集刊发展座谈会:“广州学”的传承与创新
  • 四姑娘山一游客疑因高反身亡,镇卫生院:送到时已很严重