cocos2d-x 关于 std::string 与 const char* 之间转换的奇怪问题
2013-04-21 01:03
447 查看
//先存储一个string类型数据 CCUserDefault::sharedUserDefault()->setStringForKey("Jason", "Hello"); CCUserDefault::sharedUserDefault()->flush(); //然后通过下面方式得到字符串 const char* fileName = CCUserDefault::sharedUserDefault()->getStringForKey("Jason").c_str(); //打印语句正常,输出为 Hello CCLOG("fileName:%s", fileName); //可是下面语句在设备上显示就出错,或是什么都没有,或是字符串不全,或是显示 Helvetica CCLabelTTF* label = CCLabelTTF::create(fileName, "Helvetica", 24); label->setPosition(ccp(240, 160)); addChild(label);
//接着来解决上面问题,我们换种写法 CCLabelTTF* label = CCLabelTTF::create(CCUserDefault::sharedUserDefault()->getStringForKey("Jason").c_str(), "Helvetica", 24); label->setPosition(ccp(240, 160)); addChild(label); //结果为Hello,正常
//我们再换种写法 std::string fileName = CCUserDefault::sharedUserDefault()->getStringForKey("Jason"); CCLabelTTF* label = CCLabelTTF::create(fileName.c_str(), "Helvetica", 24); label->setPosition(ccp(240, 160)); //结果也为Hello,正常
//再来种写法 std::string fileName = CCUserDefault::sharedUserDefault()->getStringForKey("Jason"); const char* file = fileName.c_str(); CCLabelTTF* label = CCLabelTTF::create(file, "Helvetica", 24); label->setPosition(ccp(240, 160)); addChild(label); //结果这种写法也正常,那为什么最上面写法就得不到正确结果呢??
总结:虽然深层原因不知道,但可以先记住: 返回std::string类型就用std::string类型来接
我的cocpos2d-x版本cocos2d-2.1rc0-x-2.1.2,有知道原因的童鞋请赐教。
相关文章推荐
- 关于cstring ->string-> const char * 用U2A一步转换 错误的内存问题
- char*,const char*,char[],string之间的转换问题。
- 关于CString剖析,“strcmp”: 不能将参数1从“CString”转换为“const char *”问题
- std::string 转换为 const* char
- C# char和byte 以及string之间的转换问题
- 关于CString剖析,"strcmp": 不能将参数1从"CString”"转换为"const char *"问题
- c++ 中 char 与 string 之间的相互转换问题
- string 和const char*和char*之间的转换
- 关于String、date、Timestamp之间的相互转换问题
- c++中string、const char*和char*之间的相互转换
- 关于CString剖析,“strcmp”: 不能将参数1从“CString”转换为“const char *”问题
- string char* const char*之间互相转换
- c++ 中 char 与 string 之间的相互转换问题
- const char* char*和string之间的转换
- 深入 JAVA里面关于byte数组和String之间的转换问题
- "std::basic_stringbuf<char, std::char_traits<char>, std::allocator<char> >::str() const"问题的解决办法
- 关于int,string,char之间转换
- VS2010不能将参数 1 从“std::string”转换为“const char *”解决
- JAVA里面关于byte数组和String之间的转换问题
- VS中关于CString 和 char *之间的转换问题