复制载体的内容< BYTE>到BYTE * [英] copy content of vector<BYTE> to BYTE*

查看:79
本文介绍了复制载体的内容< BYTE>到BYTE *的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述




我用向量< BYTE>替换了我的BYTE *在我以前做的事情:


void CCardRecord :: GetRecData(int nOffset,int nDataSize,CString& csValue)

{

BYTE * pTmp = NULL;

pTmp = new BYTE [nDataSize + 1];

memset(pTmp,0,nDataSize + 1);

// memcpy(pTmp,& m_pData [nOffset],nDataSize);

csValue = pTmp;

}


但是现在m_pData是一个向量。

Hi,

I have replaced my BYTE* by a vector<BYTE> and before I used to do :

void CCardRecord::GetRecData(int nOffset, int nDataSize, CString& csValue)
{
BYTE *pTmp = NULL;
pTmp = new BYTE[nDataSize + 1];
memset(pTmp, 0, nDataSize + 1);
//memcpy(pTmp, &m_pData[ nOffset ], nDataSize);
csValue = pTmp;
}

But now m_pData is a vector.

推荐答案

Vince写道:
我用向量<替换了我的BYTE * ; BYTE>在我以前做之前:

void CCardRecord :: GetRecData(int nOffset,int nDataSize,CString& csValue)
{
BYTE * pTmp = NULL;
pTmp = new BYTE [nDataSize + 1];
memset(pTmp,0,nDataSize + 1);
// memcpy(pTmp,& m_pData [nOffset],nDataSize);


真的没什么变化。你仍然可以做到这一点


memcpy(pTmp,& m_pData [nOffset],nDataSize);


原因是那个向量's存储是一个连续的元素块,

本质上是一个数组。 ''m_pData [nOffset]''确实为

向量调用了运算符[],但是它返回对nOffset-th元素的引用,你可以

take它的地址。 nOffset-th之后的向量的所有元素都位于
相同的数组中,因此您可以将其传递给''memcpy''。

csValue = pTmp;
}

但是现在m_pData是一个向量。
I have replaced my BYTE* by a vector<BYTE> and before I used to do :

void CCardRecord::GetRecData(int nOffset, int nDataSize, CString& csValue)
{
BYTE *pTmp = NULL;
pTmp = new BYTE[nDataSize + 1];
memset(pTmp, 0, nDataSize + 1);
//memcpy(pTmp, &m_pData[ nOffset ], nDataSize);
Nothing changes, really. You should still be able to do

memcpy(pTmp, &m_pData[nOffset], nDataSize);

The reason is that vector''s storage is a contiguous chunk of elements,
essentially an array. ''m_pData[nOffset]'' does call the operator[] for the
vector, but it returns a reference to the nOffset-th element, and you may
take its address. All elements of the vector after the nOffset-th sit in
the same array, so you may pass it to ''memcpy''.
csValue = pTmp;
}

But now m_pData is a vector.




V



V


d:\ RATP \ Borne_FROM_SCRATCH_200105 \ CardObj.cpp(159):错误C2440:''='':

无法从''std :: vector< _Ty>''转换为' 'BYTE *''

,含

[

_Ty = BYTE

]

Victor Bazarov <五******** @ comAcast.net> écritdansle message de news:

5u******************@newsread1.mlpsca01.us.to.veri o.net .. 。
d:\RATP\Borne_FROM_SCRATCH_200105\CardObj.cpp(159) : error C2440: ''='' :
cannot convert from ''std::vector<_Ty>'' to ''BYTE *''
with
[
_Ty=BYTE
]
"Victor Bazarov" <v.********@comAcast.net> a écrit dans le message de news:
5u******************@newsread1.mlpsca01.us.to.veri o.net...
Vince写道:
我用矢量替换了我的BYTE *< BYTE>在我以前做之前:

void CCardRecord :: GetRecData(int nOffset,int nDataSize,CString&
csValue)
{
BYTE * pTmp = NULL;
pTmp = new BYTE [nDataSize + 1];
memset(pTmp,0,nDataSize + 1);
// memcpy(pTmp,& m_pData [nOffset],nDataSize);
I have replaced my BYTE* by a vector<BYTE> and before I used to do :

void CCardRecord::GetRecData(int nOffset, int nDataSize, CString&
csValue)
{
BYTE *pTmp = NULL;
pTmp = new BYTE[nDataSize + 1];
memset(pTmp, 0, nDataSize + 1);
//memcpy(pTmp, &m_pData[ nOffset ], nDataSize);



没有什么变化,真的。你仍然应该能够做到memcpy(pTmp,& m_pData [nOffset],nDataSize);

原因是vector的存储是一个连续的块元素,基本上是一个数组。 ''m_pData [nOffset]''确实为
向量调用operator [],但它返回对nOffset-th元素的引用,你可以获取它的地址。 nOffset之后的向量的所有元素都位于相同的数组中,因此您可以将其传递给''memcpy''。



Nothing changes, really. You should still be able to do

memcpy(pTmp, &m_pData[nOffset], nDataSize);

The reason is that vector''s storage is a contiguous chunk of elements,
essentially an array. ''m_pData[nOffset]'' does call the operator[] for the
vector, but it returns a reference to the nOffset-th element, and you may
take its address. All elements of the vector after the nOffset-th sit in
the same array, so you may pass it to ''memcpy''.

csValue = pTmp;
}

但是现在m_pData是一个向量。
csValue = pTmp;
}

But now m_pData is a vector.



V



V



Vince写道:
d:\ RATP \ Borne_FROM_SCRATCH_200105 \ CardObj.cpp(159):错误C2440:''='':
无法从''std :: vector<转换; _Ty>''到''BYTE *''

[
_Ty = BYTE
]


在哪里?你的代码片段中没有赋值,除了''csValue''

和''pTmp'',其中没有一个是向量。


你说''m_pData''是一个向量。是吗?或者它是一个指向矢量的指针?

你是否保留了函数的其余部分?你改变了吗?如果你确实改变了它,那怎么样?


请不要顶一下。谢谢。


Victor Bazarov <五******** @ comAcast.net> écritdansle message de news:
5u******************@newsread1.mlpsca01.us.to.veri o.net ...
d:\RATP\Borne_FROM_SCRATCH_200105\CardObj.cpp(159) : error C2440: ''='' :
cannot convert from ''std::vector<_Ty>'' to ''BYTE *''
with
[
_Ty=BYTE
]
WHERE? There is no assignment in your code fragment except to ''csValue''
and ''pTmp'', none of which is a vector.

You said ''m_pData'' was a vector. Is it? Or is it a pointer to a vector?
Did you leave the rest of the function intact? Did you change it? If you
did change it, how?

And don''t top-post, please. Thank you.


"Victor Bazarov" <v.********@comAcast.net> a écrit dans le message de news:
5u******************@newsread1.mlpsca01.us.to.veri o.net...
Vince写道:
Vince wrote:
我用矢量替换了我的BYTE *< BYTE>在我以前做之前:

void CCardRecord :: GetRecData(int nOffset,int nDataSize,CString&
csValue)
{
BYTE * pTmp = NULL;
pTmp = new BYTE [nDataSize + 1];
memset(pTmp,0,nDataSize + 1);
// memcpy(pTmp,& m_pData [nOffset],nDataSize);
I have replaced my BYTE* by a vector<BYTE> and before I used to do :

void CCardRecord::GetRecData(int nOffset, int nDataSize, CString&
csValue)
{
BYTE *pTmp = NULL;
pTmp = new BYTE[nDataSize + 1];
memset(pTmp, 0, nDataSize + 1);
//memcpy(pTmp, &m_pData[ nOffset ], nDataSize);



没有什么变化,真的。你仍然应该能够做到memcpy(pTmp,& m_pData [nOffset],nDataSize);

原因是vector的存储是一个连续的块元素,基本上是一个数组。 ''m_pData [nOffset]''确实为
向量调用operator [],但它返回对nOffset-th元素的引用,你可以获取它的地址。 nOffset之后的向量的所有元素都位于相同的数组中,因此您可以将其传递给''memcpy''。



Nothing changes, really. You should still be able to do

memcpy(pTmp, &m_pData[nOffset], nDataSize);

The reason is that vector''s storage is a contiguous chunk of elements,
essentially an array. ''m_pData[nOffset]'' does call the operator[] for the
vector, but it returns a reference to the nOffset-th element, and you may
take its address. All elements of the vector after the nOffset-th sit in
the same array, so you may pass it to ''memcpy''.

csValue = pTmp;
}

但是现在m_pData是一个向量。
csValue = pTmp;
}

But now m_pData is a vector.



V



V



-

请在邮寄回复时从我的地址中删除资金


--
Please remove capital As from my address when replying by mail


这篇关于复制载体的内容&lt; BYTE&gt;到BYTE *的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆