C (STL)实现的修改游戏存档文件的2个相关类.docVIP

C (STL)实现的修改游戏存档文件的2个相关类.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
C++(STL)实现的修改游戏存档文件的2个相关类.txt两个人吵架,先说对不起的人,并不是认输了,并不是原谅了。他只是比对方更珍惜这份感情。C++(STL)实现的修改游戏存档文件的2个相关类 收藏 //本类可自动检查游戏存档中的数值 //属于模板类 //T代表要寻找数据的类型//如金钱,生命等属于整型 //但不排除以后要查找其他类型的数据。为了可扩充性,使用了模板。 template typename T class CheckBinaryFile{ public: typedef fstream::off_type AddressType;//要找的数据在文件中的地址类型 CheckBinaryFile();//构造函数 void Run(); private: static const int MaxByte=sizeof(T);//要查找的数据的类型所占的字节数 const int CharSize; EInputStream CIN;//一个加强输入流(第三方类) string FileName;//文件名称 T OldData;//输入的要查找的数据 int ByteNumber;//要查找的数据所占的字节数 //mutable关键字是const的反义作用,容易变动的变量经常使用它 mutable bool InputIsOk; //用于读的文件对象 mutable ifstream BinaryFile; mutable listAddressType AddressList; //操作方法 void Input(); int Check() const; void SaveAddressToFile(ostream) const;//最后的const作用是防止修改本类对象的状态,即除mutable关键字标识的变量外其他都不可在此函数内做修改 void AutoModifySave(const T) const;//在函数内防止修改T类型的参数 }; template typename T //如果是static声明的静态变量在类体内做了声明,则在类外必须再做定义,而且只能被声明一次 const int CheckBinaryFileT::MaxByte; //源文件 //////////////////////////////////////////////////////////////////////////////////// //构造函数 template typename T CheckBinaryFileT::CheckBinaryFile():CharSize(char),CIN(cin){ InputIsOk=true; Input(); //CharSize 为sizeof(char),把cin 绑定到CIN。由于CharSize是常量,必须在构造函数的初始化列表中设定。 } //私有函数:输入成员函数 template typename T void CheckBinaryFileT::Input() { //打开指定的输入文件名的二进制文件 coutBinary Filename:\t; cinFileName; BinaryFile.open(FileName.c_str(),ios::in|ios::binary); if(!BinaryFile) { InputIsOk=false; cerropen file failed!\n; return; } //输入要查找的数据 coutthe Integer you want to search:\t; CINOldData; //要找的数据的所占的数据位(字节数) coutbyte number:(1--CheckBinaryFileT::MaxByte):\t; CINByteNumber; //字节数是否溢出的检查 if(ByteNumber1||ByteNumberCheckBinaryFileT::MaxByte) { ByteNumber=Chec

文档评论(0)

82393aa + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档