char* CtestSettingDlg::WcharToChar(const wchar_t* pwchSrc)
{
char* pchDest = NULL;
if (pwchSrc != NULL)
{
int nLen = wcslen(pwchSrc);
int nRealLen = ::WideCharToMultiByte(CP_ACP, 0, pwchSrc, nLen, 0, 0, 0, 0);
if (nRealLen > 0)
{
pchDest = new char[nRealLen + 1];
if (NULL != pchDest)
{
WideCharToMultiByte(CP_ACP, 0, pwchSrc, nLen, pchDest, nRealLen + 1 , NULL, NULL);
pchDest[nRealLen] = '/0';
}
}
}
return pchDest;
}
挺简单的,一看就能明白了。虽然违反了“谁申请谁释放”的内存管理原则,但是减少了一次内存copy操作,具体利弊,请自行权衡。