想用cocos2d-x-2.1.4调用tIDy HTML库来整理HTML,发现一个问题,就是
用:TIDyBuffer 定义变量output,但是是output.bp是byte格式,如何转换成cclabelTTF格式,就需要用CCString来转换。
转换核心代码如下:
//转换
CCString* ns=CCString::createWithFormat("%s",(char *)output.bp);
const char *mystring= ns->getCString();
//显示
cclabelTTF* pLabel = cclabelTTF::create(mystring,"Arial",24);
全部调用代码块如下:
#include "tIDy/tIDy.h";
#include "tIDy/tIDybuffio.h";
const char* input = "<Title>Hello</Title><p>World!";
TIDyBuffer output = {0};
TIDyBuffer errbuf = {0};
int rc = -1;
Bool ok;
// Initialize "document"
TIDyDoc tdoc = tIDyCreate();
cclog( "TIDying:\t%s\n",input );
// Convert to xhtml
ok = tIDyOptSetBool( tdoc,TIDyxhtmlOut,yes );
if ( ok )
rc = tIDySetErrorBuffer( tdoc,&errbuf ); // Capture diagnostics
if ( rc >= 0 )
rc = tIDyParseString( tdoc,input ); // Parse the input
if ( rc >= 0 )
rc = tIDyCleanAndRepair( tdoc ); // TIDy it up!
if ( rc >= 0 )
rc = tIDyRunDiagnostics( tdoc ); // Kvetch
if ( rc > 1 ) // If error,force output.
rc = ( tIDyOptSetBool(tdoc,TIDyForceOutput,yes) ? rc : -1 );
if ( rc >= 0 )
rc = tIDySaveBuffer( tdoc,&output ); // Pretty Print
if ( rc >= 0 )
{
if ( rc > 0 )
cclog( "\nDiagnostics:\n\n%s",errbuf.bp );
cclog( "\nAnd here is the result:\n\n%s",output.bp );
}
else
cclog( "A severe error (%d) occurred.\n",rc );
//在释放前转换
CCString* ns=CCString::createWithFormat("%s",(char *)output.bp);
const char *mystring= ns->getCString();
//
tIDyBufFree( &output );
tIDyBufFree( &errbuf );
tIDyRelease( tdoc );
///不要在这里转换,因为已经释放了
//显示
cclabelTTF* pLabel = cclabelTTF::create(mystring,24);其他略,在bool HelloWorld::init()对应添加,同时在classes创建一个tIDy目录,然后把tIDy的src目录和include拷贝到classes的tIDy目录就可以了。
总结以上是内存溢出为你收集整理的cocos2d-x-2.1.4 调用tidy html库全部内容,希望文章能够帮你解决cocos2d-x-2.1.4 调用tidy html库所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)