cocos2dx 字符串管理

在Cocos2d-x中能够使用的字符串constchar*、std::string和cocos2d::__String等,其中const char*是C风格的字符串,std::string是C++风格的字符串,它封装了const char*。cocos2d::__String才是Cocos2d-x引擎提供的字符串类,这些字符串都可以互相转换,它们会在不同的场景下使用,具体使用那个可以看具体的API。
使用const char*和std::string
我们在C++中两种类型都可以使用,但是std::string是一个类,具体面向对象的优点,而const char*没有。我们是下面代码初始化std::string对象。

        

[html] view plaincopy在CODE上查看代码片派生到我的代码片
std::string name = "tony"; 
td::string name = std::string("tony"); 


我们不需要使用指针,也不需要关心内存释放问题,在作用域超出之后std::string对象别释放。我们可以通过下面的语句把std::string转化为const char*类型。


[html] view plaincopy在CODE上查看代码片派生到我的代码片
const char* cstring = name.c_str(); 

我们可以使用std::string指针类型,但是要配合使用new关键字开辟内存空间,然后不再使用的时候要通过delete释放内存。


[html] view plaincopy在CODE上查看代码片派生到我的代码片
std::string* name =newstd::string("tony"); 
… … 
delete name; 


使用std::string指针对象时候,我们可以通过下面的代码转化为const char*类型。

   

[html] view plaincopy在CODE上查看代码片派生到我的代码片
const char* cstring = name->c_str(); 

const char* 和std::string的在Cocos2d-x中还有很多,我们会在后面的学习中给大家介绍。

使用cocos2d::__String
cocos2d::__String是Cocos2d-x通过的一个字符串类,它的设计模拟了Objective-C的NSString类,这由于Cocos2d-x源自于Cocos2d-iphone,cocos2d::__String也是基于Unicode双字节编码。

cocos2d::__String的类图如下图所示,
 




创建它的主要的静态create函数如下:


[html] view plaincopy在CODE上查看代码片派生到我的代码片
static__String * create (const std::string &str) 
static__String * createWithFormat (const char *format,...) 

使用create函数的实例代码如下:


[html] view plaincopy在CODE上查看代码片派生到我的代码片
__String* name=  __String::create("Hi,Tony"); 
int num=123; 
__String* ns = __String::createWithFormat("%d",num); 
   


cocos2d::__String还提供了一些数据类型之间的转换函数。例如:cocos2d::__String转换为const char*类型,这种转换用的比较多的,示例代码如下:


[html] view plaincopy在CODE上查看代码片派生到我的代码片
__String* name=  __String::create("Hi,Tony"); 
const char *cstring=name->getCString(); 


const char*转换为cocos2d::__String类型,示例代码如下:


[html] view plaincopy在CODE上查看代码片派生到我的代码片
const char* cstring = "Hi,Tony"; 
__String*ns=__String::createWithFormat("%s",cstring); 


std::string转换为cocos2d::__String类型,示例代码如下:


[html] view plaincopy在CODE上查看代码片派生到我的代码片
std::string string = "Hi,Tony";    
__String*ns=__String::createWithFormat("%s",string.c_str()); 


cocos2d::__String转换为int类型,示例代码如下:


[html] view plaincopy在CODE上查看代码片派生到我的代码片
int num = 123; 
__String* ns =__String::createWithFormat("%d",num); 
int num2 = ns->intValue(); 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值