6

「memcpy」を「std::copy」に置き換えたかったのですが、引数を渡す正しい方法が見つかりません。

私の古いmemcpyコードは

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

std::copy でいろいろ試してみましたが、どれもうまくいきませんでした。

誰か助けてくれませんか?

4

1 に答える 1

2

あなたの構文から、このようなものになるようです。(Feature[0] が char* であると仮定すると、そうでない場合はキャストする必要があります (コメントを確認してください) )

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

そして、あなたのコメントでわかるように

コンパイラに優先するもの (memcopy、memmove、またはその他) を決定させたいので、std::copy を使用します。

std::copymemcpyコンパイラによって変換されません。それらは無関係です。コピーはこのようなことをします

while (first != last) {
    *d_first++ = *first++;
}
于 2013-05-11T15:59:16.090 に答える