一、代码分析
CString类是先写入长度,再写入数据 。在ar<<str处下断点调试。
void CTUselesssDoc::Serialize(CArchive& ar)
{
if (ar.IsStoring())
{
// TODO: add storing code here
CString str = "This is a test";//写入CString变量
ar<<str; //运算符重载,转到CArchive::<<(CString &string)的序列化函数中去
}
else
{
// TODO: add loading code here
ar>>m_str;//变量C**Doc::CString m_str
}
写入文本数据,可用 ar.WriteString((LPCSTR)str);
二、总结
1、主要是在存取CString数据时,会存一个长度在字符串前面先写入长度。
2、MFC菜单资源中,String Table中,IDR_MAINFRAME第3项改为.stu是指文档后缀名,保存时会自动添加。
参考:1、