cocos2d-x 字符串类型转换

cocos2d-x中使用的字符串有const char *,std::string,cocos2d::_String;

1、const char * -> std::string

const char *cstr= "abc";
std::string name(cstr);

2、const char * -> cocos2d::_String

const char *cstr= "abc";
_String *ns = _String::createWithFormat("%s",cstr);

3、 std::string -> const char *

std::string name = "abc";
const char *cstr = name.c_str();

4、 std::string -> cocos2d::_String

std::string name = "abc";
_String *ns =_String::createWithFormat("%s",name.c_str());

5、cocos2d::_String -> const char *

_String *name=_String::create("abc");
const char *cstr = name.getCString();

6、cocos2d::_String -> std::string 

_String *ns= _String::create("abc");
std::string name(ns.getCString());

7、cocos2d::_String ->int

int num =0;
_String *ns =_String::createWithFormat("%d",num);
int num2 = ns.intValue();

8、gbk->utf-8

//在Win32平台下,将GBK编码转换为UTF-8  
string MyUtility::gbk_2_utf8(const string text)  
{  
#if (CC_TARGET_PLATFORM == CC_PLATFORM_WIN32)  
    //采用Lambda表达式,将string转换成wstring  
    wstring tes = [=]() {  
        setlocale(LC_ALL, "chs");  
        const char* _Source = text.c_str();  
        size_t _Dsize = text.size() + 1;  
        wchar_t *_Dest = new wchar_t[_Dsize];  
        wmemset(_Dest, 0, _Dsize);  
        mbstowcs(_Dest, _Source, _Dsize);  
        std::wstring result = _Dest;  
        delete[]_Dest;  
        setlocale(LC_ALL, "C");  
        return result;  
    }();  
  
    int asciSize = WideCharToMultiByte(CP_UTF8, 0, tes.c_str(), tes.size(), NULL, 0, NULL, NULL);  
    if (asciSize == ERROR_NO_UNICODE_TRANSLATION || asciSize == 0)  
    {  
        return string();  
    }  
  
    char *resultString = new char[asciSize];  
    int conveResult = WideCharToMultiByte(CP_UTF8, 0, tes.c_str(), tes.size(), resultString, asciSize, NULL, NULL);  
    if (conveResult != asciSize)  
    {  
        return string();  
    }  
    string buffer = "";  
    buffer.append(resultString, asciSize);  
  
    delete[] resultString;  
    return buffer;  
  
#else  
    return text;  
#endif  
  
}  



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值