2013-05-11 107 views
2

我想用“std :: copy”替换我的“memcpy”,但我无法找到传递参数的正确方法。C++将memcpy转换为std :: copy

我的旧的memcpy代码为

memcpy(&uFeatures.Features[0], &((char*)(m_pData))[iBytePos],iByteCount); 

我试着用的std ::复制各种事情,但他们都没有工作。

请问有人可以帮忙吗?

+0

'uFeatures.Features'和'm_pData'类型是什么?另外,你为什么要改成'std :: copy'的原因是什么?你尝试过什么“各种各样的事情”? – Sven 2013-05-11 15:59:11

+2

哇 - 看着那个后不得不洗去我的眼睛! – 2013-05-11 15:59:50

+0

如果你的代码看起来像这样,我看不出有什么理由不使用memcpy。 – yngccc 2013-05-11 16:07:06

回答

1

从你的语法看来它会像这样的味道。 (假设功能[0]是char *,如果不是你需要投(查看评论))

std::copy(&uFeatures.Features[0], &uFeatures.Features[0]+iByteCount, &((char*)(m_pData))[iBytePos]) 

,正如我在您的意见看

我想,让编译器决定什么它喜欢(存储器复制, 的memmove或其他任何东西),这就是为什么我要使用std ::复制

std::copy不会被编译器转换为memcpy。他们是无关的。复制将做类似this

while (first != last) { 
    *d_first++ = *first++; 
} 
+0

谢谢你,但它崩溃了我。 – tmighty 2013-05-11 16:06:38

+0

'm_pData'是否在其上分配了'iBytePos + iByteCount'字节内存? – 2013-05-11 16:08:46

+0

我不确定... – tmighty 2013-05-11 16:12:24