加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

cocos2dx iconv编码转换可跨平台

发布时间:2020-12-14 20:06:08 所属栏目:百科 来源:网络整理
导读:#include "MyUtils.h"#if(CC_TARGET_PLATFORM == CC_PLATFORM_WIN32)#include "../external/win32-specific/icon/include/iconv.h"#else#include "../iconv/include/iconv.h"#endifCMyUtils* CMyUtils::m_Instatce = nullptr;CMyUtils* CMyUtils::getInstanc
#include "MyUtils.h"

#if(CC_TARGET_PLATFORM == CC_PLATFORM_WIN32)
#include "../external/win32-specific/icon/include/iconv.h"
#else
#include "../iconv/include/iconv.h"
#endif

CMyUtils* CMyUtils::m_Instatce = nullptr;

CMyUtils* CMyUtils::getInstance()
{
	if(m_Instatce == nullptr)
	{
		m_Instatce = new CMyUtils();
	}

	return m_Instatce;
}

void CMyUtils::release()
{
	if (m_Instatce != nullptr)
	{
		delete m_Instatce;
		m_Instatce = nullptr;
	}
}

int CMyUtils::Convert(char* from_charset,char* to_charset,const char* inbuf,size_t inlen,char* outbuf,size_t outlen)
{
	iconv_t cd = iconv_open(to_charset,from_charset);
	if(cd == 0)
		return -1;
	memset(outbuf,outlen);
#if(CC_TARGET_PLATFORM == CC_PLATFORM_WIN32)
	const char* pTemp = inbuf;
	const char** pIn = &pTemp;
	char** pOut = &outbuf;
	if(iconv(cd,pIn,&inlen,pOut,&outlen) == -1)
	{
		iconv_close(cd);
		return -1;
	}
#else
	if(iconv(cd,&inbuf,&outbuf,&outlen) == -1)
	{
		iconv_close(cd);
		return -1;
	}
#endif
	iconv_close(cd);

	return 0;
}


std::string CMyUtils::Gb2312ToUtf8(const char *inbuf)
{
	size_t inleng = strlen(inbuf);
	char* outbuf =  new char[inleng * 2 + 2];
	std::string strRet;
	if( Convert("gb2312","utf-8",inbuf,inleng,outbuf,inleng * 2 + 2) == 0 )
		strRet = outbuf;
	delete[] outbuf;
	return strRet;
}



#ifndef __UTIL_H__
#define __UTIL_H__
#include <string>

class CMyUtils
{
private:
	CMyUtils(){};
	~CMyUtils(){};

public:
	std::string Gb2312ToUtf8(const char *inbuf);

	static CMyUtils* getInstance();

	void release();


private:
	int Convert(char* from_charset,size_t outlen);

private:
	static CMyUtils* m_Instatce;


};

#endif

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读