Cocos2d-x之String
| 版权声明:本文为博主原创文章,未经博主允许不得转载。
在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的更多相关文章
- cocos2dx骨骼动画Armature源码分析(三)
代码目录结构 cocos2dx里骨骼动画代码在cocos -> editor-support -> cocostudio文件夹中,win下通过筛选器,文件结构如下.(mac下没有分,是整个 ...
- Cocos2d-x 3.0 Json用法 Cocos2d-x xml解析
Cocos2d-x 3.0 加入了rapidjson库用于json解析.位于external/json下. rapidjson 项目地址:http://code.google.com/p/rapidj ...
- 【转】cocos2d-x Lua
Call custom c++ from Lua cocos2d-x lua binds c++ class, class functions ,enum and some global functi ...
- Cocos2d-x数据持久化-修改数据
修改数据时,涉及的SQL语句有insert.update和delete语句,这3个SQL语句都可以带参数.修改数据的具体步骤如下所示.(1) 使用sqlite3_open函数打开数据库.(2) 使用s ...
- cocos2d-x实战 C++卷 学习笔记--第4章 字符串 __String类
前言: <cocos2d-x实战C++卷>学习笔记.(cocos2d-x 是3.0版本) 介绍 cocos2d-x 通用的字符串类 __String . 使用cocos2d::__Str ...
- cocos2d-x 读取 json 文件并用 jsoncpp 做解析
一码胜万言(请看注释) CclUtil.h // // CclUtil.h // PracticeDemo // // Created by kodeyang on 8/1/13. // // #if ...
- 【Cocos2d-x游戏引擎开发笔记(25)】XML解析
原创文章,转载请注明出处:http://blog.csdn.net/zhy_cheng/article/details/9128819 XML是一种非常重要的文件格式,由于C++对XML的支持非常完善 ...
- Cocos2d-x数据持久-变更数据
当数据变化,参与SQL报表insert.update和delete声明.这项3个月SQL语句可以带参数. 详细过程的数据,例如,下面的变化看出.(1) 采用sqlite3_open开放式数据库功能.( ...
- address2line 定位 Android c++奔溃位置
Android调用c++出现奔溃,崩溃信息为如下: 10-11 15:15:13.541 D/AudioMTKStreamOut( 139): write(), buffer = 0x42bd9390 ...
- cocos2d-js 3.0 RC0 手动绑定 C++调用js,js调用C++ jsbinding
参考:http://www.tairan.com/archives/4902 参考文章是2.x版本的,对于3.0也许不合适了,没有深究. 代码:https://github.com/kenkozhen ...
随机推荐
- beeline链接hive报错
看问题:beeline连接hiveserver2报错.连接串:hive --service beeline -u jdbc:hive2://localhost:10000/hive 错误:Error ...
- mySql配置在nodejs中使用
mySql安装完成后,配置链接nodejs项目中的数据库. 1.测试是否安装成功. 2.use nodejs使用nodejs 3.设置数据源 5.exit
- JavaScript——正则匹配、正则提取、正则替换
正则匹配 // 匹配日期 var dateStr = '2015-10-10'; var reg = /^\d{4}-\d{1,2}-\d{1,2}$/ console.log(reg.test(da ...
- mpvue 无法获取$store的问题
在开发的时候,我们喜欢将一些公共的方法,属性,放在一个特定的位置,例如在mpvue开发小程序的时候, 我们将其放在 vue提供的store里面,或者在mainjs中通过Vue.prototype.xx ...
- linux性能分析工具Memory
- rlogin - 远程注册
SYNOPSIS(总览) rlogin [-8EKLdx ] [-e char ] [-l username ] host DESCRIPTION(描述) Rlogin 在远程主机 host 上开始 ...
- springcloud整合分布式事务LCN
一.创建eureka注册中心 a.pom文件 <properties> <java.version>1.8</java.version> <spring-cl ...
- 前后端分离下的CAS跨域流程分析
写在最前 前后端分离其实有两类: 开发阶段使用dev-server,生产阶段是打包成静态文件整个放入后端项目中. 开发阶段使用dev-server,生产阶段是打包成静态文件放入单独的静态资源服务器中, ...
- golang对象
对象和组合 package main import ( "fmt" ) type father struct { name string sex int } type sun st ...
- python range和arange
range:自带函数,返回一个序列 range(起始点,终止点(不包含),步长(整数)) 起始点和步长都可以省略,起始点默认为0,步长默认为1 range(1,11,2) [1,3,5,7,9] ...