首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

c++ string、UTF8互相转换方法

2013-10-30 
c++string、UTF8相互转换方法 普通sting类型 转UTF-8编码式字符串std::string ofDewarServer::string_To_UT

c++ string、UTF8相互转换方法
 普通sting类型 转UTF-8编码格式字符串

std::string ofDewarServer::string_To_UTF8(const std::string & str){int nwLen = ::MultiByteToWideChar(CP_ACP, 0, str.c_str(), -1, NULL, 0);wchar_t * pwBuf = new wchar_t[nwLen + 1];//一定要加1,不然会出现尾巴ZeroMemory(pwBuf, nwLen * 2 + 2);::MultiByteToWideChar(CP_ACP, 0, str.c_str(), str.length(), pwBuf, nwLen);int nLen = ::WideCharToMultiByte(CP_UTF8, 0, pwBuf, -1, NULL, NULL, NULL, NULL);char * pBuf = new char[nLen + 1];ZeroMemory(pBuf, nLen + 1);::WideCharToMultiByte(CP_UTF8, 0, pwBuf, nwLen, pBuf, nLen, NULL, NULL);std::string retStr(pBuf);delete []pwBuf;delete []pBuf;pwBuf = NULL;pBuf = NULL;return retStr;}//////////////////////////////////////////////////////////////////////////


UTF-8编码格式字符串  转普通sting类型

std::string ofDewarServer::UTF8_To_string(const std::string & str){int nwLen = MultiByteToWideChar(CP_UTF8, 0, str.c_str(), -1, NULL, 0);wchar_t * pwBuf = new wchar_t[nwLen + 1];//一定要加1,不然会出现尾巴memset(pwBuf, 0, nwLen * 2 + 2);MultiByteToWideChar(CP_UTF8, 0, str.c_str(), str.length(), pwBuf, nwLen);int nLen = WideCharToMultiByte(CP_ACP, 0, pwBuf, -1, NULL, NULL, NULL, NULL);char * pBuf = new char[nLen + 1];memset(pBuf, 0, nLen + 1);WideCharToMultiByte(CP_ACP, 0, pwBuf, nwLen, pBuf, nLen, NULL, NULL);std::string retStr = pBuf;delete []pBuf;delete []pwBuf;pBuf = NULL;pwBuf = NULL;return retStr;}//////////////////////////////////////////////////////////////////////////



热点排行