【问题标题】:copy buffer contents to another buffer将缓冲区内容复制到另一个缓冲区
【发布时间】:2019-10-15 15:55:12
【问题描述】:

我的缓冲区中有一个 http 请求的内容。 然后我定义另一个与最后一个大小相同的缓冲区。 我需要将缓冲区的内容复制到我的新缓冲区。 所以我需要的帮助是如何将一个缓冲区复制到另一个缓冲区。

我尝试了memcpy,但它不起作用。

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

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

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

我想将pMediaData 复制到buf1

谢谢

【问题讨论】:

  • memcpy 听起来像你想要的 - 你能发布你的代码片段吗?
  • @fammi:如果不知道缓冲区的类型,这是不可能回答的。请向我们展示相关代码(缓冲区的定义,应该复制它的代码)。
  • 1.显示您的代码。 2. 接受您之前问题的答案。
  • 请不要说memcpy() 不起作用,除非您提供代码并描述观察到的行为。
  • @fammi:请告诉我们你是如何复制缓冲区的。

标签: c++


【解决方案1】:

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

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

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

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

【讨论】:

  • 谢谢,是的,缓冲区类已经写好了...我会在原帖中添加它
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多