我刚刚开始使用Perl,php和汇编程序回到c ++,我正在尝试使用Visual Studio 2017和c ++创建一个简单的MFC程序来打开二进制文件进行查看。我试图在向导创建的代码中工作,我已经难倒了。我知道这可能不是做我想做的最好的方式,但我正在学习。
无论如何,我正在处理的代码是:
void CAdamImageManagerDoc::Serialize(CArchive& ar)
{
if (ar.IsStoring())
{
// TODO: add storing code here
}
else
{
// TODO: add loading code here
char documentBuffer[1000];
ar.Read(documentBuffer, 1000);
AfxMessageBox((LPCTSTR)documentBuffer);
}
}
使用标准mfc文件打开对话框OnFileOpen选择文件后调用此方法。我想弄清楚的是:
这是我近10年来的第一个问题所以请保持温和,不要告诉我如何正确地格式化问题或其他事情。
答案 0 :(得分:3)
答案 1 :(得分:2)
通常,您可以像编写CArchive一样以相反的方式解码CArchive的流。
因此在大多数情况下,无需知道文件的大小。序列化n个元素主要是使用CObList
或CObArray
完成的,或者只是将数据块的大小写入归档,然后是BYTE。与解码流的方式相同。
if (ar.IsStoring())
{
DWORD dwSize = m_lenData;
ar << dwSize;
ar.Write(documentBuffer, dwSize);
}
else
{
DWORD dwSize;
ar >> dwSize;
ar.Read(documentBuffer, dwSize);
}
如果您查看MFC代码如何序列化CString或如何序列化CObArray,您会发现相同的方式。
请注意,在这种情况下,文件将变为二进制文件。而且不再只是&#34;文字&#34;。