请教cocos2dx怎么读取一个TXT文件并显示出来?

时间:2021-05-28 11:01:02
    using std::string ;
string pathKey = CCFileUtils::sharedFileUtils()->fullPathForFilename("li.txt");  
    unsigned char* pBuffer = NULL;  
    unsigned long bufferSize = 0;  
    pBuffer = CCFileUtils::sharedFileUtils()->getFileData(pathKey.c_str(), "r", &bufferSize);



CCSize visibleSize = CCDirector::sharedDirector()->getVisibleSize();
    CCPoint origin = CCDirector::sharedDirector()->getVisibleOrigin();
CCLabelTTF* pLabel = CCLabelTTF::create(pathKey.c_str(), "Arial", 24);
    
    // position the label on the center of the screen
    pLabel->setPosition(ccp(origin.x + visibleSize.width/2,
                            origin.y + visibleSize.height/2));

    this->addChild(pLabel, 1);
我现在的程序是这样的

3 个解决方案

#1


现在这个程序的问题是pbuffer是unsigned char,CCLabelTTF::create是需要string
所以存在问题。
还有这种实现方式我自己也不太确定。

#2


const   char*   pBuffer1   =   (const   char*)(char*)pBuffer;  
加了一句,直接变成constchar ,不去搞string了,搞定了;
但是又有新的问题,txt中是汉字,经过提取unsigned char ,变成char,又变成const char后,值没变,显示的是乱码,为什么啊。。。

#3


cocos2dx? 你到这来来问,或许你到cocos2dx的官网去看看吧   
我以前使用的是cocos2dx 2.26的时候是把中文写到一个plist文件中,利用key-value的方式  来解决 中文乱码问题的,那个时候我的问题是直接
CCLabelTTF::create("中文","Arial", 24) 显示的都是乱码。  
所以你先不读取文件直接中文看能不能正常,如果正常显示,那就可能是你转码的问题。 否则的话你就需要先解决显示中文的问题

#1


现在这个程序的问题是pbuffer是unsigned char,CCLabelTTF::create是需要string
所以存在问题。
还有这种实现方式我自己也不太确定。

#2


const   char*   pBuffer1   =   (const   char*)(char*)pBuffer;  
加了一句,直接变成constchar ,不去搞string了,搞定了;
但是又有新的问题,txt中是汉字,经过提取unsigned char ,变成char,又变成const char后,值没变,显示的是乱码,为什么啊。。。

#3


cocos2dx? 你到这来来问,或许你到cocos2dx的官网去看看吧   
我以前使用的是cocos2dx 2.26的时候是把中文写到一个plist文件中,利用key-value的方式  来解决 中文乱码问题的,那个时候我的问题是直接
CCLabelTTF::create("中文","Arial", 24) 显示的都是乱码。  
所以你先不读取文件直接中文看能不能正常,如果正常显示,那就可能是你转码的问题。 否则的话你就需要先解决显示中文的问题