当前位置: 首页 > 工具软件 > cclog > 使用案例 >

windows下 cocos2dx CCLOG 打印中文变为问号的解决办法

端木飞
2023-12-01

此方法用到Windows库下的函数MultiByteToWideChar和WideCharToMultiByte,直接用的方法就是直接引用cocos2d.h即可


下面贴出函数

std::string U2G(const char* utf8)
{
int len = MultiByteToWideChar(CP_UTF8, 0, utf8, -1, NULL, 0);
wchar_t* wstr = new wchar_t[len + 1];
memset(wstr, 0, len + 1);
MultiByteToWideChar(CP_UTF8, 0, utf8, -1, wstr, len);
len = WideCharToMultiByte(CP_ACP, 0, wstr, -1, NULL, 0, NULL, NULL);
char* str = new char[len + 1];
memset(str, 0, len + 1);
WideCharToMultiByte(CP_ACP, 0, wstr, -1, str, len, NULL, NULL);
if (wstr) delete[] wstr;
std::string strRet(str);
return strRet;
}


std::string G2U(const char* gb2312)
{
int len = MultiByteToWideChar(CP_ACP, 0, gb2312, -1, NULL, 0);
wchar_t* wstr = new wchar_t[len + 1];
memset(wstr, 0, len + 1);
MultiByteToWideChar(CP_ACP, 0, gb2312, -1, wstr, len);
len = WideCharToMultiByte(CP_UTF8, 0, wstr, -1, NULL, 0, NULL, NULL);
char* str = new char[len + 1];
memset(str, 0, len + 1);
WideCharToMultiByte(CP_UTF8, 0, wstr, -1, str, len, NULL, NULL);
if (wstr) delete[] wstr;
std::string strRet(str);
return strRet;
}

方法显而易见 直接 CCLOG(G2U("没毛病").c_str()); 

当然同学们也可以自己再封装成自己的log函数

 类似资料: