ansi與unicode字串轉換
阿新 • • 發佈:2019-01-02
TCHAR* ConvertAnsiToUnicode(char* pAnsi, int iAnsiLen, int& iOutUnicodeLen)//iOutUnicodeLen返回unicode字串長度 { iOutUnicodeLen = ::MultiByteToWideChar(CP_ACP, 0, pAnsi, iAnsiLen, NULL, 0);//計算需要的長度 TCHAR* pUnicode = new TCHAR[iOutUnicodeLen + 1]; //加1讓字串以‘0’結束 memset(pUnicode, 0, (iOutUnicodeLen + 1) * sizeof(TCHAR)); MultiByteToWideChar(CP_ACP, 0, pAnsi, iAnsiLen, pUnicode, iOutUnicodeLen); return pUnicode; } char* ConvertUnicodeToAnsi(TCHAR* pUnicode, int iUnicodeLen, int& iOutAnsiLen)//iOutAnsiLen返回ansi字串長度 { iOutAnsiLen = WideCharToMultiByte(CP_ACP, 0, pUnicode, iUnicodeLen, NULL, 0, NULL, NULL); char* pAnsi = new char[iOutAnsiLen + 1]; memset(pAnsi, 0, (iOutAnsiLen + 1) * sizeof(char)); WideCharToMultiByte(CP_ACP, 0, pUnicode, iUnicodeLen, pAnsi, iOutAnsiLen, NULL, NULL); return pAnsi; }