这函数,使用的是标准C函数。需要头文件cstdlib和clocale。针对中文的unicode写的函数。
这两个函数算是对wcstombs和mbstowcs的一个使用例子吧。
///
将中文Unicode转换为Ansi多字节字符串
/* *
@param [out] paramDest 保存转换后的字符串
@param [in] paramSource 原始的Unicode字符串
@param [in] paramDestBytes 用于保存转换后字符串的内存字节数
@return XInt 返回被转换后的字符个数(不含结尾0)
*/
inline XInt ChineseUnicodeToMultByte(XChar * paramDest, const XWideChar * paramSource, XInt paramDestBytes)
{
XChar pCurLocale[ 50 ];
StringCopy(pCurLocale,setlocale(LC_ALL,NULL), 49 );
setlocale(LC_ALL, " chs " );
size_t iByteCount = wcstombs(paramDest, paramSource, paramDestBytes);
setlocale(LC_ALL, pCurLocale);
return (XInt)iByteCount;
}
/// 将中文Ansi多字节转换为Unicode字符串
/* *
@param [out] paramDest 保存转换后的字符串
@param [in] paramSource 原始的Unicode字符串
@param [in] paramDestBytes 用于保存转换后字符串的内存字节数
@return XInt 返回被转换后的字符个数(不含结尾0)
*/
inline XInt ChineseMultByteToUnicode(XWideChar * paramDest, const XChar * paramSource,XInt paramDestByte)
{
setlocale(LC_ALL, " chs " );
size_t iByteCount = mbstowcs(paramDest, paramSource, paramDestByte);
setlocale(LC_ALL, " C " );
return (XInt)iByteCount;
}
这两个函数,已经融合到我的那个字符串XWideString和XAnsiString中,它这两个字符串相互转换非常容易。具体语言的参考,可以查看MSDN。
/* *
@param [out] paramDest 保存转换后的字符串
@param [in] paramSource 原始的Unicode字符串
@param [in] paramDestBytes 用于保存转换后字符串的内存字节数
@return XInt 返回被转换后的字符个数(不含结尾0)
*/
inline XInt ChineseUnicodeToMultByte(XChar * paramDest, const XWideChar * paramSource, XInt paramDestBytes)
{
XChar pCurLocale[ 50 ];
StringCopy(pCurLocale,setlocale(LC_ALL,NULL), 49 );
setlocale(LC_ALL, " chs " );
size_t iByteCount = wcstombs(paramDest, paramSource, paramDestBytes);
setlocale(LC_ALL, pCurLocale);
return (XInt)iByteCount;
}
/// 将中文Ansi多字节转换为Unicode字符串
/* *
@param [out] paramDest 保存转换后的字符串
@param [in] paramSource 原始的Unicode字符串
@param [in] paramDestBytes 用于保存转换后字符串的内存字节数
@return XInt 返回被转换后的字符个数(不含结尾0)
*/
inline XInt ChineseMultByteToUnicode(XWideChar * paramDest, const XChar * paramSource,XInt paramDestByte)
{
setlocale(LC_ALL, " chs " );
size_t iByteCount = mbstowcs(paramDest, paramSource, paramDestByte);
setlocale(LC_ALL, " C " );
return (XInt)iByteCount;
}
这两个函数算是对wcstombs和mbstowcs的一个使用例子吧。