这函数,使用的是标准C函数。需要头文件cstdlib和clocale。针对中文的unicode写的函数。
///将中文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。
这两个函数算是对wcstombs和mbstowcs的一个使用例子吧。