C++ MFC:序列化指向字节数组的指针?
试图在MFC框架内,处理C++ MFC:序列化指向字节数组的指针?,c++,serialization,mfc,C++,Serialization,Mfc,试图在MFC框架内,处理serialize()中字节指针的正确方法是什么?例如,假设您有: PBYTE m_TheData; SIZE_T m_TheDataSize; 在Serialize()的类重写中,可以使用如下代码读取/写入m_the data字节数组成员及其大小: void MyClass::Serialize(CArchive&ar) { CDocument::Serialize(ar);//用直接基类替换“CDocument”! //注意:“大小”类型在32位和64位平台/版本
serialize()
中字节指针的正确方法是什么?例如,假设您有:
PBYTE m_TheData;
SIZE_T m_TheDataSize;
在
Serialize()
的类重写中,可以使用如下代码读取/写入m_the data
字节数组成员及其大小:
void MyClass::Serialize(CArchive&ar)
{
CDocument::Serialize(ar);//用直接基类替换“CDocument”!
//注意:“大小”类型在32位和64位平台/版本之间变化。。。
uint64\u t dsFixed;/…使用此选项可保证64位“大小”写入/读取!
if(ar.IsStoring()){
//…写其他东西。。。
//…确保在写入和读取之间严格遵守顺序
dsFixed=uint64_t(m_数据大小);
ar你尝试过什么?你想用CArchive
操作符来做这件事吗?我可以为m_数据大小做这件事,但它不知道m_数据的长度,那怎么行呢?我没有使用CByteArray
来判断。我只是有一个指向某些数据的指针。对于写入:首先写入数据大小e、 然后使用ar.Write(m_TheData,(int)(m_TheData))
。对于读取:读取大小,创建数据(使用new
),然后使用ar.read(…)`。您应该将其添加为一个答案…为什么size_T
而不是size_T
?还有这一点:CDocument::Serialize(ar);//替换“CDocument”关于你的直接基类!
不是很清楚…@Jabberwocky OP使用了SIZE\u T
,这就是我为什么这么做的原因。我添加了基类Serialize()
,让引用的函数看起来有点可用性(忽略它是一个常见的“错误”,尽管M/s文档说你应该调用它)。