C++ string wstring 互转


如何在cocos2dx 中实现可以跨平台的string wstring 并且支持中文!
以下代码在WIN32 可以实现但是在 Android就会引起崩溃!

   
  wchar_t * Tools::UTF8ToUnicode( const char* sBuf )
  
{
#ifdef WIN32
int textlen ;
wchar_t * result;
textlen = MultiByteToWideChar( CP_UTF8, 0, sBuf,-1, NULL,0 );
result = (wchar_t *)malloc((textlen+1)*sizeof(wchar_t));
memset(result,0,(textlen+1)*sizeof(wchar_t));
MultiByteToWideChar(CP_UTF8, 0,sBuf,-1,(LPWSTR)result,textlen );
return result;
#else
setlocale(LC_ALL, "zh_CN.UTF-8");
size_t sSize=strlen(sBuf);
wchar_t * dBuf=NULL;
int dSize=mbstowcs(dBuf, sBuf, 0)+1;
dBuf=new wchar_t[dSize];
wmemset(dBuf, 0, dSize);
int nRet= mbstowcs(dBuf, sBuf, sSize);
setlocale(LC_ALL,"C");
return dBuf;
#endif
}

cocos2d-x C++

Mega喵帕斯 10 years, 10 months ago

在项目中,用了以下网页的方法。之前用setlocale在android上也是无效。
网上说是setlocale在android上面是无效的!
http://blog.163.com/sylar_lin/blog/st...

snjxzha answered 10 years, 10 months ago

Your Answer