请教一个数据串行化的问题?
在一个单文档程序中,定义了2个字符串变量接受用户输入,CStringstr1,str2.关闭程序的时候把str1,str2串行化到文件中。但是打开文件的时候,怎么把文件数...
在一个单文档程序中,定义了2个字符串变量接受用户输入,CString str1,str2.
关闭程序的时候把str1,str2串行化到文件中。
但是打开文件的时候,怎么把文件数据还原到str1,str2?
写得不错,但是你没弄懂我的意思。
比如用户对str1输入1234, 对str2输入5678.串行化保存以后文件变成了12345678。
再打开文件的时候,怎么把str1变成1234,str2变成5678,用文档类的Serialize()函数实现。 展开
关闭程序的时候把str1,str2串行化到文件中。
但是打开文件的时候,怎么把文件数据还原到str1,str2?
写得不错,但是你没弄懂我的意思。
比如用户对str1输入1234, 对str2输入5678.串行化保存以后文件变成了12345678。
再打开文件的时候,怎么把str1变成1234,str2变成5678,用文档类的Serialize()函数实现。 展开
2个回答
展开全部
1、保存文件
CString str1, str2;
//为str1,str2赋值
...
//调用保存文件对话框
CFileDialog dlgSave(FALSE);
if (dlgSave.DoModal() != IDOK)
return;
//记录存档文件的文件名
CString strFilePathName = dlgSave.GetPathName();
//创建存档文件
CFile fileSave;
if (fileSave.Open(strFilePathName, CFile::modeCreate|CFile::modeWrite)==TRUE)
{
//串行化存储数据
CArchive ar(&fileSave, CArchive::store);
ar << str1;
ar << str2;
ar.Close();
fileSave.Close();
}
else
{
AfxMessageBox("保存文件失败!");
return;
}
2、打开保存的文件
//调用打开文件对话框
CFileDialog dlgOpen(TRUE);
//显示打开文件对话框
if (dlgOpen.DoModal() != IDOK)
return;
//记录存档文件的路径和文件名
CString strFilePathName = dlgOpen.GetPathName();
//读取存档文件内容
CFile fileOpen;
if (fileOpen.Open(strFilePathName, CFile::modeRead)==TRUE)
{
//串行化读取数据
CArchive ar(&fileOpen, CArchive::load);
ar >> str1;
ar >> str2;
ar.Close();
fileOpen.Close();
}
else
{
AfxMessageBox("打开文件失败!");
return;
}
CString str1, str2;
//为str1,str2赋值
...
//调用保存文件对话框
CFileDialog dlgSave(FALSE);
if (dlgSave.DoModal() != IDOK)
return;
//记录存档文件的文件名
CString strFilePathName = dlgSave.GetPathName();
//创建存档文件
CFile fileSave;
if (fileSave.Open(strFilePathName, CFile::modeCreate|CFile::modeWrite)==TRUE)
{
//串行化存储数据
CArchive ar(&fileSave, CArchive::store);
ar << str1;
ar << str2;
ar.Close();
fileSave.Close();
}
else
{
AfxMessageBox("保存文件失败!");
return;
}
2、打开保存的文件
//调用打开文件对话框
CFileDialog dlgOpen(TRUE);
//显示打开文件对话框
if (dlgOpen.DoModal() != IDOK)
return;
//记录存档文件的路径和文件名
CString strFilePathName = dlgOpen.GetPathName();
//读取存档文件内容
CFile fileOpen;
if (fileOpen.Open(strFilePathName, CFile::modeRead)==TRUE)
{
//串行化读取数据
CArchive ar(&fileOpen, CArchive::load);
ar >> str1;
ar >> str2;
ar.Close();
fileOpen.Close();
}
else
{
AfxMessageBox("打开文件失败!");
return;
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询