這函數,使用的是標準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的一個使用例子吧。