ansi与unicode字符串转换

来源:互联网 发布:网络集成商 编辑:程序博客网 时间:2024/05/16 19:54

在windows程序中使用MultiByteToWideChar和WideCharToMultiByte实现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;}

至于内存根据具体情况进行管理

原创粉丝点击