将多个void *复制到一个向量中

时间:2014-02-09 16:55:05

标签: c++ vector

多年后我回到C ++(之前从未如此深入过),所以请为我的小说沉迷于我:)

作为结构的字段,我有一个指向某些数据的* void。结构指向的内存在每次调用给定函数后都会填充不同的数据,所以我想在向量中的每个函数调用之后“缓存”结果,以便最终获得所有数据。我怎样才能实现这个目标?

我宣布了static vector<unsigned char> vectorBuffer;并尝试了vectorBuffer.insert(vectorBuffer.end(), (unsigned char*)myStruct->thePointer)vectorBuffer.push_back((unsigned char*)myStruct->thePointer),但显然我遇到了错误。获得这样结果的正确方法是什么?

由于

编辑:我也知道void *的大小,因为我的struct中有另一个字段会像数据一样刷新。

2 个答案:

答案 0 :(得分:3)

你想要做的就是缓冲多个回调分段的数据:

#include <vector>

std::vector<char> buffer;

buffer.insert(buffer.end(), data, data+length);

假设data是您的回调数据,长度也可用。

答案 1 :(得分:0)

您应该使用

声明矢量
static vector<unsigned char *> vectorBuffer;

(它是一个无符号字符指针数组,而不是无符号字符)。

要保存数据(假设您知道尺寸),

unsigned char *p = new unsigned char[myStruct->bufferLength];
memcpy((void *) p, myStruct->thePointer, myStruct->bufferLength);
vectorBuffer.push_back(p);

然后您可以使用

跟踪长度
static vector<unsigned char *> bufferLength;
bufferLength.push_back(myStruct->bufferLength);

请注意,之后你需要释放内存。