Cocos2D-x游戏开发之二十五:自定义文本读取工具类

现在我们在上一节的基础上开始对文件进行解析,其实很简单的实现了一个类而已;i这个各类可以获得一个文件中特定行上的特定值,直接上代码:

#ifndef __FILE_LOAD_UTIL_H__
#define __FILE_LOAD_UTIL_H__

#include "cocos2d.h"

using namespace cocos2d;

class FileLoadUtil : public CCObject {
public:
    static FileLoadUtil* sharedFileLoadUtil();

    bool init();

    /* 获取文件每一行的数据,按行存放到列表中 */
    CCArray* getDataLines(const char* sFilePath);

private:
    static FileLoadUtil* mFileLoadUtil;
};

#endif

#include "FileLoadUtil.h"
#include "StringUtil.h"

FileLoadUtil* FileLoadUtil::mFileLoadUtil = NULL;

FileLoadUtil* FileLoadUtil::sharedFileLoadUtil() {
    if(mFileLoadUtil == NULL) {
        mFileLoadUtil = new FileLoadUtil();
        if(mFileLoadUtil && mFileLoadUtil->init()) {
            mFileLoadUtil->autorelease();
        }
        else {
            CC_SAFE_DELETE(mFileLoadUtil);
            mFileLoadUtil = NULL;
        }
    }

    return mFileLoadUtil;
}

bool FileLoadUtil::init() {
    return true;
}

CCArray* FileLoadUtil::getDataLines( const char* sFilePath ) {
    CCArray* linesList = CCArray::create();

	/* 读取文本数据 */
    unsigned long pSize = 0;
    unsigned char* chDatas = CCFileUtils::sharedFileUtils()->getFileData(sFilePath, "r", &pSize);

    /* 将数据转换为字符串对象 */
    CCString* str = CCString::createWithData(chDatas, pSize);

	/* 使用split函数按行分隔字符串 */
    linesList = StringUtil::sharedStrUtil()->split(str->getCString(), "\n");
    
    return linesList;
}
现在我们定义这个需要读取的文件如下:

ID,Name,Level,HP,MP,HappyValue
1,zxl,08500122,gsplzxl,200,2000
2,vanileo,08250419,gspldpg,250,999999

在HelloWorld中的调试:

  const char* sPath = "Monster.csv"; 

  CsvUtil::sharedCsvUtil()->loadFile(sPath);
  const char* firstMonsterName = CsvUtil::sharedCsvUtil()->get(1, 1, sPath);
  const char* secMonsterHP = CsvUtil::sharedCsvUtil()->get(2,2, sPath);


  CCLOG("name = %s", firstMonsterName);
  CCLOG("number = %s", secMonsterHP);

调试结果:




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值