只要您不Element
直接从内存中写入向量或 s ,就可以了。您需要序列化任何不是 POD(普通旧数据)的东西。这就是你的情况:vector
和string
.
向量很简单,因为您只需为Element
. 但是您可能想要序列化向量大小:
ofstream& WriteVec( ofstream& s, vector<Element> &elem )
{
size_t size = elem.size();
s.write( (char*)&size, sizeof(size) );
for( int i = 0; i < size; i++ )
elem(i).Write(s);
return s;
}
对于您的元素:
ofstream& Element::Write( ofstream& s )
{
// Serialize pathName
size_t strsize = pathName.size();
s.write( (char*)&strsize, sizeof(strsize) );
s.write( pathName.c_str(), strsize );
// Serialize other stuff
s.write( (char*)&offsitePtr, sizeof(offsitePtr) );
s.write( (char*)&subPage, sizeof(subPage) );
}
当你阅读时,你也会做类似的事情。将让您解决=)请注意,在每种情况下,您都在编写大小,然后是数据。当您阅读时,您会阅读大小,然后在将内容读入之前调整结构的大小。
哦,确保以二进制模式打开文件流。