#include <tchar.h>
#include <string>
#include "iconv\iconv.h"
#pragma comment(lib,"libiconv.lib")
int GBKToUTF8(std::string & gbkStr,const char* toCode,const char* fromCode)
{
iconv_t iconvH;
iconvH = iconv_open(fromCode,toCode);
if (iconvH == 0)
{
return -1;
}
const char* strChar = gbkStr.c_str();
const char** pin = &strChar;
size_t strLength = gbkStr.length();
char* outbuf = (char*) malloc(strLength*4);
char* pBuff = outbuf;
memset( outbuf,strLength*4);
size_t outLength = strLength*4;
if (-1 == iconv(iconvH,pin,&strLength,&outbuf,&outLength))
{
free(pBuff);
iconv_close(iconvH);
return -1;
}
gbkStr = pBuff;
free(pBuff);
iconv_close(iconvH);
return 0;
}
//使用方法
std::string str = "你好";
GBKToUTF8(str,"gbk","utf-8");
CCLabelTTF* label = CCLabelTTF::create(str.c_str(),"Arial",24);
this -> addChild(label);