cocos2dx中提供了三种基本的数据类型:CCString(字符串),CCArray(数组),CCDictionary(数据字典(哈希的功能))

2.CCString的用法

class  CCString : public CCObject,可见CCString本质是一个CCObject,因此支持create方法和其他CCObject的特性

a.CCString的创建:

CCString *str=CCString("abc");

CCString *str=CCString::create("1234");//CCObject的特性

CCString *str=CCString::createwithformat("id%d",3);//格式化初始化

static CCString* createWithData(const unsigned char* pData, unsigned long nLen);//使用二进制数据里创建一个字符串

static CCString* createWithContentsOfFile(const char* pszFileName);//根据文件来创建一个字符串

b.CCString与其他数据类型的转换:

int intValue() const;

unsigned int uintValue() const;

float floatValue() const;

double doubleValue() const;

bool boolValue() const;

2.CCArray是一个数组容器,用来盛放CCObject类型的对象

a.CCArray的创建方法:

/** 创建一个数组*/
static CCArray* create();
/** 使用一些对象创建数组*/
static CCArray* create(CCObject* pObject, …);
/** 使用一个对象创建数组*/
static CCArray* createWithObject(CCObject* pObject);
/** 创建一个指定大小的数组*/
static CCArray* createWithCapacity(unsigned int capacity);
/** 使用一个现有的CCArray 数组来新建一个数组*/
static CCArray* createWithArray(CCArray* otherArray);

b.CCArray中的删除操作

需要注意的是,CCArray中的remove是把后续的整块数据全部一次性往前移动一个元素的内存距离,而fastremove只是把最后一个元素的内容替换当前要删除的元素的内容,会产生重复的数据:

unsigned int remaining = arr->num - index;
if(remaining>0)
{
  memmove((void *)&arr->arr[index], (void *)&arr->arr[index+1],
  remaining * sizeof(CCObject*));
}

c.CCARRAY_FOREACH和CCARRAY_FOREACH_REVERSE在删除数据的遍历中,反向遍历不会出错,而前向遍历会报错,因为在本次遍历中,指针的位置是固定的,而中间有remove操作会移动整块数据块,导致末尾的指针置空,从而出错.故在可能需要删除数据的遍历中,应尽量使用CCARRY_FOREACH_REVEARE

3.CCDictionary,数据字典

a.数据字典里存储的都是键值对,且key的类型只支持int,或者string中的一种

b.对于某部数据字典,其键值的类型只能唯一确定一种,不能既有int,又有string

c.内部采用了哈希的原理,查找速度和数组差不多

使用方法:

CCDictionary *dict = CCDictionary::create(); //创建数据字典

dict->retain();

/*设置键值对*/

dict->setObject(&str, "id");  //数据字典中存放的都是CCObject对象

dict->setObject(&path, 222);//报错,一个数据字典中,key值必须一致,要么全是int,要么全是string,这里上面是string,这里是int,不行

/*根据键名来获取值*/

CCString *id=(CCString*)dict->objectForKey("id");

//CCString *ph = (CCString*)dict->objectForKey("path");

CCString *ph = (CCString*)dict->objectForKey(2);

CCLog("%s", id->getCString());

CCLog("%s", ph->getCString());

d.使用CCDictionary和xml文件来显示中文

CCDictionary *file = CCDictionary::createWithContentsOfFile("chinese.xml");//通过文件来创建数据字典

CCString *pep = (CCString *)file->objectForKey("people1");//该key是xml文件中已有的,否则报错

CCLog("%s", pep->getCString());

CCLabelTTF * ttf = CCLabelTTF::create(pep->getCString(), "Courier New", 30);

ttf->setPosition(ccp(240, 160));

addChild(ttf);

cocos2dx中的三种基本的数据类型的更多相关文章

  1. java多线程中的三种特性

    java多线程中的三种特性 原子性(Atomicity) 原子性是指在一个操作中就是cpu不可以在中途暂停然后再调度,既不被中断操作,要不执行完成,要不就不执行. 如果一个操作时原子性的,那么多线程并 ...

  2. 061 hive中的三种join与数据倾斜

    一:hive中的三种join 1.map join 应用场景:小表join大表 一:设置mapjoin的方式: )如果有一张表是小表,小表将自动执行map join. 默认是true. <pro ...

  3. 简单谈谈Python中的几种常见的数据类型

    简单谈谈Python中的几种常见的数据类型 计算机顾名思义就是可以做数学计算的机器,因此,计算机程序理所当然地可以处理各种数值.但是,计算机能处理的远不止数值,还可以处理文本.图形.音频.视频.网页等 ...

  4. Java三大框架之——Hibernate中的三种数据持久状态和缓存机制

    Hibernate中的三种状态   瞬时状态:刚创建的对象还没有被Session持久化.缓存中不存在这个对象的数据并且数据库中没有这个对象对应的数据为瞬时状态这个时候是没有OID. 持久状态:对象经过 ...

  5. Asp.Net中的三种分页方式

    Asp.Net中的三种分页方式 通常分页有3种方法,分别是asp.net自带的数据显示空间如GridView等自带的分页,第三方分页控件如aspnetpager,存储过程分页等. 第一种:使用Grid ...

  6. httpClient中的三种超时设置小结

    httpClient中的三种超时设置小结   本文章给大家介绍一下关于Java中httpClient中的三种超时设置小结,希望此教程能给各位朋友带来帮助. ConnectTimeoutExceptio ...

  7. MySQL buffer pool中的三种链

    三种page.三种list.LRU控制调优 一.innodb buffer pool中的三种页 1.free page:从未用过的页 2.clean page:干净的页,数据页的数据和磁盘一致 3.d ...

  8. 研究分析JS中的三种逻辑语句

    JS中的三种逻辑语句:顺序.分支和循环语句. 一.顺序语句 代码规范如下:1. <script type="text/javascript"> var a = 10;  ...

  9. JavaScript中的三种弹出对话框

    学习过js的小伙伴会发现,我们在一些实例中用到了alert()方法.prompt()方法.prompt()方法,他们都是在屏幕上弹出一个对话框,并且在上面显示括号内的内容,使用这种方法使得页面的交互性 ...

随机推荐

  1. Sharepoint 2013 安装部署系列篇 第三篇 -- 安装和配置网络负载均衡在前端web服务器

    第一部分 系统集群安装 第二部分 SQL集群安装 第四部分 安装和配置sharepoint 场(三层拓扑部署) 接下来一步一步开始配置NLB吧, 以下开始讲解如何配置NLB集群作为sharepoint ...

  2. AspxGridView 数据的汇总统计

    AspxGridView底部增加数据汇总行 这个功能在AspxGridView中不用复杂的代码实现, 实际上只是设置下GridView的属性而已 1. ShowFooter设置为True,即显示. 位 ...

  3. 五、PackageManager获取版本号

    PackageInfo代表的是关于一个包的所有信息,就相当于一个APP应用的清单文件中收集到的所有信息. 通过这个类我们就可以获取类似版本号等一些信息. 1 2 3 4 5 6 7 8 9 10 11 ...

  4. XAPI(XenAPI)

      转载:http://www.cnblogs.com/dkblog/archive/2011/07/07/2099885.html 初识toolstack--XEN的XenServer管理的核心 什 ...

  5. centos安装与基本使用

    1.      插入安装光盘 2.      进入试用 3.      在试用的桌面系统选择安装到硬盘 4.      选择安装语言 5.      选择基本存储或者专门的存储设备 6.      - ...

  6. jquery页面滚动,菜单固定到顶部

    // 菜单固定 $(function(){ //获取要定位元素距离浏览器顶部的距离 var navH = $("#topp").offset().top; //滚动条事件 $(wi ...

  7. DBCP之----"数据库"与"连接池"的连接建立过程

    1 public class DBCPTest { 2 /* 3 * 使用BasicDataSource类,通过url, 4 和diverClass,username,password, 5 几个参数 ...

  8. Geodatabase介绍

    一.概述 (1)Geodatabase是什么? ArcGIS操作基于GIS文件格式和存储于地理数据库(Geodatabase)中的地理信息.Geodatabase是ArcGIS的本地数据结构,是用于编 ...

  9. Toad for Oracle 快捷键

    F4 看表的结构 F5 执行对话框中的SQL,注意最后需要以;结尾 F7 清除当前编辑框中所有的sql F8 查看历史的sql语句 F9 执行当前行的sql F10 看菜单 Ctrl + F12 保存 ...

  10. laravel步骤 (我是新手)

    1/需要一个wnmp之类的虚拟服务器 2/创建路由   php artisan make:route routes Route::group(['middleware' => ['web','a ...