用C函數(shù)來轉(zhuǎn)換Unicode和ANSI文字
char sChar[MAX_PATH];
const WCHAR wChar[] = L"我的朋友";
// 把wChar這個Unicode字符串轉(zhuǎn)換成ANSI字符串,保存到sChar,并且返回ANSI的字符串大小,如果失敗,則返回-1
? wcstombs(sChar, wChar, MAX_PATH);
這樣是運行不過不去的,總是返回-1。
后來經(jīng)人提醒,需要在調(diào)用wcstombs之前要先設(shè)置代碼頁:
char sChar[MAX_PATH];
const WCHAR wChar[] = L"我的朋友";
// 設(shè)置代碼頁為默認代碼頁
? _tsetlocale(LC_ALL,_T(""));
// 把wChar這個Unicode字符串轉(zhuǎn)換成ANSI字符串,保存到sChar,并且返回ANSI的字符串大小,如果失敗,則返回-1
? wcstombs(sChar, wChar, MAX_PATH);
這樣就可以了!不用調(diào)用煩人的WideCharToMultiByte!多好啊!
相反的函數(shù):mbstowcs,可以從ANSI轉(zhuǎn)換到Unicode