实现deserialize() 需要一些技巧,因为你需要为字符串分配一个临时缓冲区。做法如下: void MP3_clip::deserialize() { ifstream arce("mp3.dat"); int len=0; char *p=0; arc.read(reinterpret_cast<char *>(&date), sizeof(date)); arc.read(reinterpret_cast<char *>(&len), sizeof(len)); p=new char [len+1]; // allocate temp buffer for name arc.read(p, len+1); // copy name to temp, including '\0' name=p; // copy temp to data member delete[] p; arc.read(reinterpret_cast<char *>(&bitrate), sizeof(bitrate)); arc.read(reinterpret_cast<char *>(&stereo), sizeof(stereo)); } 性能优化 你可能会感到迷惑,为什么不把整个对象一次性转储到文件中,而必须对每个数据成员进行序列化呢?换句话说,难道不能用下面的方式实现serialize() 吗? void MP3_clip::serialize() { |
正在阅读:C++学习:在C++中创建持久对象C++学习:在C++中创建持久对象
2004-02-14 09:34
出处:PConline
责任编辑:linjixiong
键盘也能翻页,试试“← →”键