C++宽字符与普通字符的转换实例详解分享

—-想了解C++宽字符与普通字符的转换实例详解分享的全部内容且更多的C语言教程关注<计算机技术网(www.ctvol.com)!!>

C++宽字符与普通字符的转换实例详解

把字符串转换成宽字符串,

实例代码:

  wstring string2Wstring(string sToMatch)   {     #ifdef _A_WIN     int iWLen = MultiByteToWideChar( CP_ACP, 0, sToMatch.c_str(), sToMatch.size(), 0, 0 ); // 计算转换后宽字符串的长度。(不包含字符串结束符)     wchar_t *lpwsz = new wchar_t [iWLen + 1];     MultiByteToWideChar( CP_ACP, 0, sToMatch.c_str(), sToMatch.size(), lpwsz, iWLen ); // 正式转换。     lpwsz[iWLen] = L'/0';      wstring wsToMatch(lpwsz);     delete []lpwsz;   #elif _A_LINUX     setlocale( LC_CTYPE, "" ); // 很重要,没有这一句,转换会失败。     int iWLen = mbstowcs( NULL, sToMatch.c_str(), sToMatch.length() ); // 计算转换后宽字符串的长度。(不包含字符串结束符)     wchar_t *lpwsz = new wchar_t[iWLen + 1];     int i = mbstowcs( lpwsz, sToMatch.c_str(), sToMatch.length() ); // 转换。(转换后的字符串有结束符)     wstring wsToMatch(lpwsz);     delete []lpwsz;   #endif     return wsToMatch;   }   //把宽字符串转换成字符串,输出使用   string wstring2string(wstring sToMatch)   {     #ifdef _A_WIN     string sResult;     int iLen = WideCharToMultiByte( CP_ACP, NULL, sToMatch.c_str(), -1, NULL, 0, NULL, FALSE ); // 计算转换后字符串的长度。(包含字符串结束符)     char *lpsz = new char[iLen];     WideCharToMultiByte( CP_OEMCP, NULL, sToMatch.c_str(), -1, lpsz, iLen, NULL, FALSE); // 正式转换。     sResult.assign( lpsz, iLen - 1 ); // 对string对象进行赋值。     delete []lpsz;   #elif _A_LINUX     int iLen = wcstombs( NULL, sToMatch.c_str(), 0 ); // 计算转换后字符串的长度。(不包含字符串结束符)     char *lpsz = new char[iLen + 1];     int i = wcstombs( lpsz, sToMatch.c_str(), iLen ); // 转换。(没有结束符)     lpsz[iLen] = '/0';     string sResult(lpsz);     delete []lpsz;   #endif     return sResult;   } 

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/c-cdevelopment/488230.html

(0)
上一篇 2020年11月12日
下一篇 2020年11月12日

精彩推荐