C++ 中创建持久对象的方法(2)_C/C++语言_黑客防线网安服务器维护基地--Powered by WWW.RONGSEN.COM.CN

C++ 中创建持久对象的方法(2)

作者:黑客防线网安C/C++教程基地 来源:黑客防线网安C/C++教程基地 浏览次数:0

本篇关键词:方法对象持久创建
黑客防线网安网讯:      archive.read((reinterpret_cast<char *>(&x), sizeof(x));        archive.read((reinterpret_cast<char *>(&y), sizeof(y));       }       序列化对象       要序列化一个完整的对...

      archive.read((reinterpret_cast<char *>(&x), sizeof(x));
        archive.read((reinterpret_cast<char *>(&y), sizeof(y));
       }
       序列化对象
       要序列化一个完整的对象应把每个数据成员写入文件中:
       class MP3_clip
       {
       private:

        std::time_t date;
        std::string name;
        int bitrate;
        bool stereo;
       public:
        void serialize();
        void deserialize();
        //..
       };
       void MP3_clip::serialize()
       {
       {
        int size=name.size();// store name's length
        //empty file if it already exists before writing new data
        ofstream arc("mp3.dat", ios::binary|ios::trunc);
        arc.write(reinterpret_cast<char *>(&date),sizeof(date));
        arc.write(reinterpret_cast<char *>(&size),sizeof(size));
        arc.write(name.c_str(), size+1); // write final '' too
        arc.write(reinterpret_cast<char *>(&bitrate),
        sizeof(bitrate));
        arc.write(reinterpret_cast<char *>(&stereo),
        sizeof(stereo));
       }

       实现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, includin

    黑客防线网安服务器维护方案本篇连接:http://www.rongsen.com.cn/show-15176-1.html
网站维护教程更新时间:2012-04-04 22:51:05  【打印此页】  【关闭
我要申请本站N点 | 黑客防线官网 |  
专业服务器维护及网站维护手工安全搭建环境,网站安全加固服务。黑客防线网安服务器维护基地招商进行中!QQ:29769479

footer  footer  footer  footer