1. 程式人生 > >ansi與unicode字串轉換

ansi與unicode字串轉換

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;
}