std ::从内存缓冲区复制到向量

时间:2014-10-30 10:42:00

标签: c++ vector

我正在尝试将二进制数据从mem缓冲区复制到矢量。

请让我知道后续尝试有什么问题

每次我将矢量大小设为0

int AhaConnectAPI::unpackDataArray(uint8_t* src, vector<uint64_t> dest, uint32_t destvectorSize, int offset)
{

    cout<<"\nstd::copy";
    std::copy(src + offset, src + offset + sizeof(uint64_t) * length, back_inserter(dest));
    return length * 8;
}

int AhaConnectAPI::unpackDataArray(uint8_t* src, vector<uint64_t> dest, uint32_t destvectorSize, int offset)
{

    uint64_t element;

    for(unsigned int i = 0 ; i<destvectorSize; i++)
    {
         offset = unpackData(src, element, offset);
         dest.push_back(element);
    }

    return dest.size() * sizeof(uint64_t);

}

2 个答案:

答案 0 :(得分:2)

在您的第一个unpackDataArray()中:您的src类型为uint8_t*,但您在sizeof(uint64_t)std::copy使用dest,{ {1}}是offset。尝试类似:

int

std::copy(static_cast<uint64_t*>(src) + static_cast<uint64_t>(offset), static_cast<uint64_t*>(src) + static_cast<uint64_t>(offset) + sizeof(uint64_t) * length, back_inserter(dest)); 可能需要进一步调整。此外offset突然出现。

答案 1 :(得分:1)

试试这个:

int AhaConnectAPI::unpackDataArray(uint8_t* src, vector<uint64_t>& dest, 
                                   uint32_t destvectorSize, int offset)

您需要通过引用传递vector(请注意&amp; )。