一個在Irrlicht中會常用的字串轉換函式
來源:互聯網
上載者:User
讓Irrlicht支援中文後,編程過程中不免經常會用到char* 到wchar_t*的轉換,看了上次轉載的那篇關於L"xx"的文章,寫了個小函數供使用.#define xmalloc(s) HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, (s))
#define xfree(p) HeapFree (GetProcessHeap(), 0, (p)) wchar_t *str2wstrptr(const char *pStr)
{
PSTR pMultiByteStr = (PSTR)pStr;
PWSTR pWideCharStr;
int nLenOfWideCharStr;
// 利用API函數MultiByteToWideChar()來把a轉化成unicode字元
nLenOfWideCharStr = MultiByteToWideChar( CP_ACP, 0, pMultiByteStr, -1, NULL, 0);
pWideCharStr = (PWSTR)xmalloc(nLenOfWideCharStr * sizeof(WCHAR));
MultiByteToWideChar( CP_ACP, 0, pMultiByteStr, -1, pWideCharStr, nLenOfWideCharStr );
return pWideCharStr;
}調用str2wstrptr後用xfree釋放xmalloc申請到的空間. 樣本:char name[] = "歲月無聲";wchar_t* pmyname= str2wstrptr(name);轉換後就可以在irrlicht用了:ITextSceneNode *bill = Scene->addTextSceneNode(fonts[1],pmyname);xfree(pmyname);可以不用Scene->addTextSceneNode(fonts[1],L"歲月無聲");了.