将缓冲区内容复制到另一个缓冲区

3

我有一个http请求的内容存储在我的缓冲区中。 然后我定义了另一个与上一个大小相同的缓冲区。 我需要将缓冲区的内容复制到我的新缓冲区中。 因此,我需要帮助的是如何将一个缓冲区复制到另一个缓冲区。

我尝试使用memcpy,但它没有起作用。

void TrivialMediaPlayer::DeliverMediaData(
        int                         streamId,
        bool                        bHasPriority,
        ConstBufferSptr             pMediaData)

我想要的是将pMediaData的内容复制到一个新的缓冲区中。

BufferSptr buf1 (new Buffer (pMediaData->Size()) );

我想要将pMediaData复制到buf1中。
谢谢。

1
memcpy听起来像是你想要的 - 你能贴一下你代码的片段吗? - Rob
1
@fammi:不知道你的缓冲区类型,无法回答这个问题。请向我们展示相关代码(缓冲区定义,应该复制它的代码)。 - Björn Pollex
1
  1. 展示你的代码。
  2. 接受你之前问题中的答案。
- fancyPants
除非您提供代码并描述观察到的行为,否则请不要说 memcpy() 不起作用。 - sharptooth
@fammi:请展示一下你如何复制缓冲区。 - Björn Pollex
@fammi:为什么不能只使用std::vector<char>作为缓冲区? - Björn Pollex
1个回答

7

我不确定您编写的确切代码是从一个StringSptr复制到另一个StringSptr。 但如果您想要

memcpy( (void*)buf1 , (void*)pMediaData , pMediaData.Size() );

您必须确保在BufferSptr类(似乎是由您编写的类)中定义了“void *”函数,以将您的BufferSptr对象转换为指向内部缓冲区地址的真实C指针。
或者,使用一些显式调用:

memcpy( buf1.data() , pMediaData.data() , pMediaData.Size() );

谢谢,是的,缓冲区类已经编写好了...我会将其添加到原始帖子中。 - fammi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接