Cocos2d-x中的字符串

在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对象。

http://blog.csdn.net/tonny_guan/article/details/25379549#http://blog.csdn.net/tonny_guan/article/details/25379549#https://code.csdn.net/snippets/335687

https://code.csdn.net/snippets/335687/fork

std::string name
= “tony”; td::string name = std::string(“tony”);

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

http://blog.csdn.net/tonny_guan/article/details/25379549#http://blog.csdn.net/tonny_guan/article/details/25379549#https://code.csdn.net/snippets/335687

https://code.csdn.net/snippets/335687/fork

const char* cstring
= name.c_str();

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

http://blog.csdn.net/tonny_guan/article/details/25379549#http://blog.csdn.net/tonny_guan/article/details/25379549#https://code.csdn.net/snippets/335687

https://code.csdn.net/snippets/335687/fork

std::string* name
=newstd::string(“tony”); … … delete name;

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

http://blog.csdn.net/tonny_guan/article/details/25379549#http://blog.csdn.net/tonny_guan/article/details/25379549#https://code.csdn.net/snippets/335687

https://code.csdn.net/snippets/335687/fork

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函数如下:

http://blog.csdn.net/tonny_guan/article/details/25379549#http://blog.csdn.net/tonny_guan/article/details/25379549#https://code.csdn.net/snippets/335687

https://code.csdn.net/snippets/335687/fork

static__String * create (const std::string &str)
static__String * createWithFormat (const char *format,…)

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

http://blog.csdn.net/tonny_guan/article/details/25379549#http://blog.csdn.net/tonny_guan/article/details/25379549#https://code.csdn.net/snippets/335687

https://code.csdn.net/snippets/335687/fork

__String* name
= __String::create(“Hi,Tony”); int num=123; __String* ns = __String::createWithFormat("%d",num);

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

http://blog.csdn.net/tonny_guan/article/details/25379549#http://blog.csdn.net/tonny_guan/article/details/25379549#https://code.csdn.net/snippets/335687

https://code.csdn.net/snippets/335687/fork

__String* name
= __String::create(“Hi,Tony”); const char *cstring=name-

getCString();

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

http://blog.csdn.net/tonny_guan/article/details/25379549#http://blog.csdn.net/tonny_guan/article/details/25379549#https://code.csdn.net/snippets/335687

https://code.csdn.net/snippets/335687/fork

const char* cstring
= “Hi,Tony”; __String*ns=__String::createWithFormat("%s",cstring);

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

http://blog.csdn.net/tonny_guan/article/details/25379549#http://blog.csdn.net/tonny_guan/article/details/25379549#https://code.csdn.net/snippets/335687

https://code.csdn.net/snippets/335687/fork

std::string string
= “Hi,Tony”; __String*ns=__String::createWithFormat("%s",string.c_str());

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

http://blog.csdn.net/tonny_guan/article/details/25379549#http://blog.csdn.net/tonny_guan/article/details/25379549#https://code.csdn.net/snippets/335687

https://code.csdn.net/snippets/335687/fork

int num
= 123; __String* ns =__String::createWithFormat("%d",num); int num2 = ns-

intValue();

还有很多函数我们会在以后的学习再给大家介绍。
更多内容请关注Cocos2d-x系列图书http://cocoagame.net/forum.php?mod=forumdisplay&fid=42
本书交流讨论网站:http://www.cocoagame.net/
欢迎加入cocos2d-x技术讨论群:257760386、327403678