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

  

<强> c++宽字符与普通字符的转换实例详解

  

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

  

实例代码:

        wstring string2Wstring(字符串sToMatch)   {   # ifdef _A_WIN   int iWLen=MultiByteToWideChar (CP_ACP 0 sToMatch.c_str (), sToMatch.size (), 0, 0);//计算转换后宽字符串的长度。(不包含字符串结束符)   wchar_t * lpwsz=新wchar_t (iWLen + 1);   MultiByteToWideChar (CP_ACP 0 sToMatch.c_str (), sToMatch.size (), lpwsz, iWLen);//正式转换。   lpwsz [iWLen]=L '/0 ';   wstring wsToMatch (lpwsz);   删除[]lpwsz;   # elif _A_LINUX   setlocale (LC_CTYPE”、“);//很重要,没有这一句,转换会失败。   int iWLen=mbstowcs (NULL, sToMatch.c_str (), sToMatch.length ());//计算转换后宽字符串的长度。(不包含字符串结束符)   wchar_t * lpwsz=新wchar_t (iWLen + 1);   int i=mbstowcs (lpwsz sToMatch.c_str (), sToMatch.length ());//转换。(转换后的字符串有结束符)   wstring wsToMatch (lpwsz);   删除[]lpwsz;   # endif   返回wsToMatch;   }//把宽字符串转换成字符串,输出使用   字符串wstring2string (wstring sToMatch)   {   # ifdef _A_WIN   字符串sResult;   int iLen=WideCharToMultiByte (CP_ACP, NULL, sToMatch.c_str (), 1, NULL, 0, NULL,假);//计算转换后字符串的长度。(包含字符串结束符)   char * lpsz=new char [iLen];   WideCharToMultiByte (CP_OEMCP NULL, sToMatch.c_str (), 1, lpsz, iLen, NULL,假);//正式转换。   sResult。分配(lpsz iLen - 1);//对字符串对象进行赋值。   删除[]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 ';   字符串sResult (lpsz);   删除[]lpsz;   # endif   返回sResult;   }      

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

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