|   版权声明:本文为博主原创文章,未经博主允许不得转载。

  在Cocos2d-x中能够使用的字符串constchar*、std::string和cocos2d::__String等,其中const char*和std::string是C++风格的字符串,它封装了const char*。cocos2d::__String才是Cocos2d-x引擎提供的字符串类,这些字符串都可以互相转换。

API中__String的主要函数:

 bool initWithFormat(const char* format, ...) CC_FORMAT_PRINTF(, );
初始化与格式的字符串,它与c函数“的sprintf”相似
int intValue() const;
转换成int值
unsigned int uintValue() const;
转换为unsigned int值
float floatValue() const;
转换为float值
double doubleValue() const;
转换为double值
bool boolValue() const;
转换为布尔值
const char* getCString() const;
得到C字符串
int length() const;
获得字符串的长度
int compare(const char *) const;
相比C字符串
void append(const std::string& str);
在当前值的末尾附加其他字符
void appendWithFormat(const char* format, ...);
追加(W /格式)在当前值的末尾附加字符
virtual bool isEqual(const Ref* pObject);
重写函数
static __String* create(const std::string& str);
创建字符串,可以通过一个C字符串指针,因为std::String的默认构造函数可以访问C字符串的指针。返回:一个字符串指针,它是一个自动释放对象的指针,这意味着你,除非你保留它没有必要做了释放操作。
static __String* createWithFormat(const char* format, ...) CC_FORMAT_PRINTF(, );
创建具有格式的字符串,它与c函数'sprintf的'类似,默认的缓冲区大小为(* )个字节,如果你想改变它,你应该修改String.cpp文件kMax__StringLen宏。返回:一个字符串指针,它是一个自动释放对象指针,*它意味着你,除非你保留它没有必要做了释放操作。
static __String* createWithData(const unsigned char* pData, size_t nLen);
创建具有二进制数据的字符串, 返回:一个字符串指针,它是一个自动释放对象的指针,这意味着你,除非你保留它没有必要做了释放操作
static __String* createWithContentsOfFile(const std::string& filename);
创建一个字符串的文件,返回:一个字符串指针,它是一个自动释放对象的指针,这意味着,除非你保留它没有必要做了释放操作。
void appendWithFormat(const char* format, ...);
拆分一个字符串

实例:

.h files

#ifndef _STRINGTEST_SCENE_H_
#define _STRINGTEST_SCENE_H_
#include "cocos2d.h"
class stringTest : public cocos2d::Layer
{
private:
public:
static cocos2d::Scene* createScene();
virtual bool init();
void string_test();
CREATE_FUNC(stringTest);
};
#endif // _STRINGTEST_SCENE_H_ .cpp files #include "StringTest.h"
USING_NS_CC;
Scene* stringTest::createScene()
{ // 'scene' is an autorelease object
auto scene = Scene::create();
// 'layer' is an autorelease object
auto layer = stringTest::create();
// add layer as a child to scene
scene->addChild(layer);
// return the scene
return scene;
}
// on "init" you need to initialize your instance
bool stringTest::init()
{
// 1. super init first
if (!Layer::init())
{
return false;
}
Size visibleSize = Director::getInstance()->getVisibleSize();
Vec2 origin = Director::getInstance()->getVisibleOrigin();
auto label = Label::createWithTTF("Hello World", "fonts/Marker Felt.ttf", 24);
label->setPosition(Vec2(origin.x + visibleSize.width / 2,
origin.y + visibleSize.height - label->getContentSize().height));
this->addChild(label, 1);
auto sprite = Sprite::create("HelloWorld.png");
sprite->setPosition(Vec2(visibleSize.width / 2 + origin.x, visibleSize.height / 2 + origin.y));
this->addChild(sprite, 0);
string_test();
return true;
}
void stringTest::string_test()
{ //1. 创建一个字符串
//首先创建一个字符串ch
String* ch = String::create("I love China!");
//再将字符串ch转换成c风格的字符串,最后将它打印出来
//getCString();函数是将字符串转换成一个c风格的字符串
CCLOG("%s", ch->getCString()); //2. 获取字符串的长度
int len = ch->length();
CCLOG("Length of string ch : length = %d", len); //3. 字符串的连接
String* name = String::create("Peter");
int age = 45;
String* linkString = String::createWithFormat("He name is %s,the age is %d", name->getCString(), age);
CCLOG("%s", linkString->getCString()); //4. 类型的转换
String* intStatus = String::create("456");
//转换成整形
int number = intStatus->intValue();
CCLOG("%d", number); //5. 追加
String* str1 = String::create("Nice");
//String* str2 = String::create(" day!");
//append();函数是一个在字符串末尾追加字符的函数
str1->append(" day!");
CCLOG("%s", str1->getCString());
}

Cocos2d-x之String的更多相关文章

  1. cocos2dx骨骼动画Armature源码分析(三)

    代码目录结构 cocos2dx里骨骼动画代码在cocos -> editor-support -> cocostudio文件夹中,win下通过筛选器,文件结构如下.(mac下没有分,是整个 ...

  2. Cocos2d-x 3.0 Json用法 Cocos2d-x xml解析

    Cocos2d-x 3.0 加入了rapidjson库用于json解析.位于external/json下. rapidjson 项目地址:http://code.google.com/p/rapidj ...

  3. 【转】cocos2d-x Lua

    Call custom c++ from Lua cocos2d-x lua binds c++ class, class functions ,enum and some global functi ...

  4. Cocos2d-x数据持久化-修改数据

    修改数据时,涉及的SQL语句有insert.update和delete语句,这3个SQL语句都可以带参数.修改数据的具体步骤如下所示.(1) 使用sqlite3_open函数打开数据库.(2) 使用s ...

  5. cocos2d-x实战 C++卷 学习笔记--第4章 字符串 __String类

    前言: <cocos2d-x实战C++卷>学习笔记.(cocos2d-x 是3.0版本) 介绍 cocos2d-x 通用的字符串类  __String . 使用cocos2d::__Str ...

  6. cocos2d-x 读取 json 文件并用 jsoncpp 做解析

    一码胜万言(请看注释) CclUtil.h // // CclUtil.h // PracticeDemo // // Created by kodeyang on 8/1/13. // // #if ...

  7. 【Cocos2d-x游戏引擎开发笔记(25)】XML解析

    原创文章,转载请注明出处:http://blog.csdn.net/zhy_cheng/article/details/9128819 XML是一种非常重要的文件格式,由于C++对XML的支持非常完善 ...

  8. Cocos2d-x数据持久-变更数据

    当数据变化,参与SQL报表insert.update和delete声明.这项3个月SQL语句可以带参数. 详细过程的数据,例如,下面的变化看出.(1) 采用sqlite3_open开放式数据库功能.( ...

  9. address2line 定位 Android c++奔溃位置

    Android调用c++出现奔溃,崩溃信息为如下: 10-11 15:15:13.541 D/AudioMTKStreamOut( 139): write(), buffer = 0x42bd9390 ...

  10. cocos2d-js 3.0 RC0 手动绑定 C++调用js,js调用C++ jsbinding

    参考:http://www.tairan.com/archives/4902 参考文章是2.x版本的,对于3.0也许不合适了,没有深究. 代码:https://github.com/kenkozhen ...

随机推荐

  1. [洛谷P1552] [APIO2012]派遣(左偏树)

    这道题是我做的左偏树的入门题,奈何还是看了zsy大佬的题解才能过,唉,我太弱了. 左偏树总结 Part 1 理解题目 很显然,通过管理关系的不断连边,最后连出来的肯定是一棵树,那么不难得出,当一个忍者 ...

  2. 18、NumPy——矩阵库(Matrix)

    NumPy 矩阵库(Matrix) NumPy 中包含了一个矩阵库 numpy.matlib,该模块中的函数返回的是一个矩阵,而不是 ndarray 对象. 一个 的矩阵是一个由行(row)列(col ...

  3. MS DOS 常用命令整理

    最近在开发用到一些dos下的一些指令,还有bat文件,特别是bat的便捷性让我在生活和开发过程中好好使用. dos指令: java com.pdcss.util.JacobService > D ...

  4. 认识Mybatis

    什么是Mybatis? MyBatis 是一款优秀的基于Java的持久层框架(来源于“internet”和“abatis”的组合),它支持定制化 SQL.存储过程以及高级映射. MyBatis 避免了 ...

  5. R语言控制流

    一般来说R语言是自上而下执行的,但是遇到特殊情况可能用到循环执行某些语句,这时候条件运算和循环就能派上用场了.

  6. Git--03 git分支

    目录 Git分支 1.新建testing分支 2.合并分支 3.合并冲突 4.删除分支 Git标签使用 1.查看标签 02.删除标签 Git分支 ​ 分支即是平行空间,假设你在为某个手机系统研发拍照功 ...

  7. python正则表达式 re (二)escape

    背景: 在使用python的过程中,你肯定对转义字符的使用苦恼过,因为有的时候我们需要使用一些特殊符号如”$ * . ^”等的原意,有时候需要被转义后的功能,并且转义字符地使用很繁琐,容易出错,那拯救 ...

  8. shell 单行多行注释

    1. 单行注释 众所周知,#  比如想要注释:echo “ni” # echo "ni" 2. 多行注释: 法一: : << ! 语句1 语句2 语句3 语句4 ! 法 ...

  9. tarzan-linux命令

    1.grep -n 'b' c    查看c中包含‘b’的 行 2. ps -ef  |  grep -n python     ps查看所有进程,并且放到管道中| ,grep 在管道中查找包含pyt ...

  10. bzoj1002 轮状病毒 暴力打标找规律/基尔霍夫矩阵+高斯消元

    基本思路: 1.先观察规律,写写画画未果 2.写程序暴力打表找规律,找出规律 1-15的答案:1    5    16    45    121 320 841     2205   5776 151 ...