【发布时间】:2011-09-16 14:49:35
【问题描述】:
我在我的 MFC 应用程序中使用 std::string,我想将它存储在 doc 的 Serialize() 函数中。我不想将它们存储为 CString,因为它会在其中写入自己的内容,而我的目标是创建一个我知道其格式并且可以由其他应用程序读取而无需 CString 的文件。所以我想将我的 std::strings 存储为 4 字节(int)字符串长度,后跟包含该字符串的大小的缓冲区。
void CMyDoc::Serialize(CArchive& ar)
{
std::string theString;
if (ar.IsStoring())
{
// TODO: add storing code here
int size = theString.size();
ar << size;
ar.Write( theString.c_str(), size );
}
else
{
// TODO: add loading code here
int size = 0;
ar >> size;
char * bfr = new char[ size ];
ar.Read( bfr, size);
theString = bfr;
delete [] bfr;
}
}
上面的代码不是很好,我必须分配一个临时 bfr 来读取字符串。首先,我可以在没有临时缓冲区的情况下将字符串直接读入 std::string 吗?其次,我可以重载 std::string / CArchive 的
【问题讨论】: