我想使用memcpy填充结构。

结构声明如下:

struct udtFeatures
{
    vector<unsigned char>ByteFeatures;
};


这是我想填充字节的地方:

void clsMapping::FeedFeaturesFromMap(udtFeatures &uFeatures,int uOtherIndex)
{
    int iBytePos=this->Content()[uOtherIndex].ByteStart;
    int iByteCount=this->Content()[uOtherIndex].ByteCount;

    memcpy(uFeatures.ByteFeatures, &((char*)(m_pVoiceData))[iBytePos],iByteCount);
}


但是memcpy不喜欢这样。

编译器说:

找不到匹配的转换函数

std::vector<unsigned char, std::allocator<unsigned char>> in void *.


我猜是因为它.ByteFeatures只是一个指针?

我该怎么办?

最佳答案

我猜是因为它.ByteFeatures只是一个指针?


不,这是因为它不仅是一个指针。它是一个向量。


  我该怎么办?


如果要指向由向量管理的数组的指针,则为uFeatures.ByteFeatures.data()&uFeatures.ByteFeatures[0]。或者,您可以考虑使用std::copy代替。

无论哪种情况,在将向量复制到其中之前,请确保向量足够大。

10-04 16:23