Cocos2D-x游戏开发之二十四:自定义字符串分割类
今天我们为下一节的CSV文件处理做一个准备,开始自定义一个对字符串按照特定的符号分割的类,实现如下:
class StringUtil : public CCObject { public: static StringUtil* sharedStrUtil(); bool init(); /** 用分隔符分割字符串,结果存放到一个列表中,列表中的对象为CCString */ CCArray* split(const char* srcStr, const char* sSep); private: static StringUtil* mStringUtil; }; #endif
#include "StringUtil.h" StringUtil* StringUtil::mStringUtil = NULL; StringUtil* StringUtil::sharedStrUtil(){ if(mStringUtil == NULL) { mStringUtil = new StringUtil(); if(mStringUtil && mStringUtil->init()) { mStringUtil->autorelease(); } else { CC_SAFE_DELETE(mStringUtil); mStringUtil = NULL; } } return mStringUtil; } bool StringUtil::init(){ return true; } CCArray* StringUtil::split( const char* srcStr, const char* sSep ){ CCArray* stringList = CCArray::create(); int size = strlen(srcStr); /* 将数据转换为Cocos2d-x字符串对象 */ CCString* str = CCString::create(srcStr); int startIndex = 0; int endIndex = 0; endIndex = str->m_sString.find(sSep); CCString* spliStr = NULL; /* 根据分隔符拆分字符串,并添加到列表中 */ while(endIndex > 0) { spliStr = CCString::create(""); /* 截取字符串 */ spliStr->m_sString = str->m_sString.substr(startIndex, endIndex); /* 添加字符串到列表 */ stringList->addObject(spliStr); /* 截取剩下的字符串 */ str->m_sString = str->m_sString.substr(endIndex + 1, size); /* 查找下一个分隔符所在下标 */ endIndex = str->m_sString.find(sSep); } /* 剩下的字符串也添加进列表 */ if(str->m_sString.compare("") != 0) { stringList->addObject(CCString::create(str->m_sString)); } return stringList; }在HelloWorld中添加调试:
bool HelloWorld::init() { bool bRet = false; do { CCArray *strlist = StringUtil::sharedStrUtil()->split("Zhangxl,aihaoguangfan,basketball,swim",","); CCObject *object = NULL; CCARRAY_FOREACH(strlist,object) { CCString *str = (CCString*)object; CCLOG(str->getCString()); } bRet = true; } while (0); return bRet; }运行效果如下:
声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。
- 上一篇: C 返回二维数组
- 下一篇: Python3 安装bulitwith 和urllib2包