cocos2d-x在windows平台中文问题-沈大海cocos2d-x教程19

//! convert from wstring to UTF8 using self-coding-converting
inline void WStrToUTF8(std::string& dest, const wstring& src){
 dest.clear();
 for (size_t i = 0; i < src.size(); i++){
  wchar_t w = src[i];
  if (w <= 0x7f)
   dest.push_back((char)w);
  else if (w <= 0x7ff){
   dest.push_back(0xc0 | ((w >> 6)& 0x1f));
   dest.push_back(0x80| (w & 0x3f));
  }
  else if (w <= 0xffff){
   dest.push_back(0xe0 | ((w >> 12)& 0x0f));
   dest.push_back(0x80| ((w >> 6) & 0x3f));
   dest.push_back(0x80| (w & 0x3f));
  }
  else if (sizeof(wchar_t) > 2 && w <= 0x10ffff){
   dest.push_back(0xf0 | ((w >> 18)& 0x07)); // wchar_t 4-bytes situation
   dest.push_back(0x80| ((w >> 12) & 0x3f));
   dest.push_back(0x80| ((w >> 6) & 0x3f));
   dest.push_back(0x80| (w & 0x3f));
  }
  else
   dest.push_back('?');
 }
}
//! simple warpper
inline std::string WStrToUTF8(const std::wstring& str){
 std::string result;
 WStrToUTF8(result, str);
 return result;
}
 
 
只在win32中label显示中文中适用
调用方法
string str = WStrToUTF8(L"你好");
CCLabelTTF* tishilabel = CCLabelTTF::labelWithString(str.c_str(), "Arial", 18);
tishilabel->setAnchorPoint(ccp(0.5,0));
tishilabel->setPosition(ccp(512,250));/  tishilabel->setColor(ccWHITE);
this->addChild(tishilabel,12);

你可能感兴趣的:(cocos2d-x在windows平台中文问题-沈大海cocos2d-x教程19)