cocos2d-x开发: 一切应该从配置文件读取开始(7)

来源:未知 责任编辑:责任编辑 发表时间:2015-03-01 01:33 点击:

p>199         }

p>200     }

p>201     std::string INICache::parseSection(const std::string& buffer, const std::string& leftTag, const std::string& rightTag)

p>202     {

p>203         std::string ret;

p>204         if(!buffer.empty())

p>205         {

p>206             std::string::size_type pos_begin = 0, pos_end = 0;

p>207             if(!leftTag.empty())

p>208             {

p>209                 pos_begin = buffer.find(leftTag);

p>210                 if(pos_begin == std::string::npos) { return ret; }

p>211                 pos_begin += leftTag.size();

p>212             } else { pos_begin = 0; }

p>213             if(!rightTag.empty())

p>214             {

p>215                 pos_end = buffer.find(rightTag, pos_begin);

p>216                 if(pos_end == std::string::npos) { return ret; }

p>217                 ret = buffer.substr(pos_begin, pos_end - pos_begin);

p>218             } else { ret = buffer.substr(pos_begin, std::string::npos); }

p>219         }

p>220         return ret;

p>221     }

p>222     bool INICache::stringToBoolean(const std::string& buffer, bool defaultValue)

p>223     {

p>224         if(buffer.empty()) { return defaultValue; }

p>225         std::stringstream sstream;

p>226         sstream << buffer;

p>227         int tmp = 0;

p>228         sstream >> tmp;

p>229         return (buffer.compare(std::string("true"))==0 || tmp > 0);

p>230     }

p>231 }

p> 

p> 

p> 

p> 这里主要是说一下我做的这些接口的思路. 读取涉及到的get/set这些方法,是基本需求.提供了两个读取Ini buffer的方法,一个是loadFromFile(const std::string& filePath),这个接口主要是应对客户端从本地读取配置文件信息,而loadFromStream(const std::stringstream& sstream)接口则是作为预留,从buffer直接读取Ini配置,为什么会做这样一个接口的预留呢? 可以一起看一下getSectionNames这个接口方法,返回的是key值的集合.

p> 

p>我是这样考虑的,c++这部分的接口尽量的简单,实现基本的功能,尽量避开业务逻辑的操作.要什么,我就提供基本接口,除非是在lua那边实现效率不高,或者是复杂,才会考虑提供完整的功能.因为紧接着下面会做更新模块的功能,这部分至少会依赖读取配置中一条关于资源版本的信息.而从远程Http服务器下载资源的时候也还是需要做很多版本的检测处理,如果是增量更新的话,需要按照版本的先后顺序依次下载.这就是要对key值进行按照需求排序. 本来在c++这部分做很简单的,我只要用std::sort函数,提供一个compare函数就好了。可是这部分是和具体的更新业务逻辑关联的,所以我不应该在c++这部分实现,所以就只是提供给你获取集合的方法.然后自己去处理.
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
用户名: 验证码:点击我更换图片
最新评论 更多>>

推荐热点

  • cocos2d-x学习笔记(19)--label 、label atlas
  • cocos2d-x学习笔记(23)--地图的使用3--CCTMXLayer
  • Cocos2d-x 2.0 之 Actions “三板斧” 之一
  • Cocos2d-x学习(一):HelloWorld
  • cocos2d-x学习笔记(18)--游戏打包(windows平台)
  • cocos2d 设置屏幕默认方向
  •  Cocos2d-x初学指南(5): Tiled Map的使用(视角移动,碰撞检测)
  • cocos2d-x学习笔记(16)--spritesheet(精灵表单)
  • cocos2d-x学习笔记(15)--地图的使用(TMX)
网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索 - 移动版 - 返回顶部
Copyright © 2008-2013 计算机技术学习交流网. 版权所有

豫ICP备11007008号-1