wchar_t* CtestSettingDlg::CharToWchar(const char* pchSrc) { wchar_t* pwchDest = NULL; if (pchSrc != NULL) { int npchLen = strlen(pchSrc); int nwLen = MultiByteToWideChar(CP_ACP, 0, pchSrc, npchLen, NULL, 0); if (nwLen > 0) { pwchDest = new wchar_t[nwLen + 1]; if (NULL != pwchDest) { MultiByteToWideChar(CP_ACP, 0, pchSrc, npchLen + 1, pwchDest, nwLen + 1); pwchDest[nwLen] = 0; } } } return pwchDest; } 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操作,具体利弊,请自行权衡。