這函數(shù),使用的是標(biāo)準(zhǔn)C函數(shù)。需要頭文件cstdlib和clocale。針對(duì)中文的unicode寫的函數(shù)。
///將中文Unicode轉(zhuǎn)換為Ansi多字節(jié)字符串
/**
@param [out] paramDest 保存轉(zhuǎn)換后的字符串
@param [in] paramSource 原始的Unicode字符串
@param [in] paramDestBytes 用于保存轉(zhuǎn)換后字符串的內(nèi)存字節(jié)數(shù)
@return XInt 返回被轉(zhuǎn)換后的字符個(gè)數(shù)(不含結(jié)尾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多字節(jié)轉(zhuǎn)換為Unicode字符串
/**
@param [out] paramDest 保存轉(zhuǎn)換后的字符串
@param [in] paramSource 原始的Unicode字符串
@param [in] paramDestBytes 用于保存轉(zhuǎn)換后字符串的內(nèi)存字節(jié)數(shù)
@return XInt 返回被轉(zhuǎn)換后的字符個(gè)數(shù)(不含結(jié)尾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;
}
這兩個(gè)函數(shù),已經(jīng)融合到我的那個(gè)字符串XWideString和XAnsiString中,它這兩個(gè)字符串相互轉(zhuǎn)換非常容易。具體語言的參考,可以查看MSDN。
這兩個(gè)函數(shù)算是對(duì)wcstombs和mbstowcs的一個(gè)使用例子吧。