//Unicode的字符转换函数
char* UnicodeToAnsi(wchar_t* wszString)
{
//预转换,得到所需空间的大小
int ansiLen = ::WideCharToMultiByte(CP_ACP, NULL, wszString, wcslen(wszString), NULL, 0, NULL, NULL);
//分配空间要给'\0'留个空间
char* szAnsi = new char[ansiLen + 1];
//转换
//unicode版对应的strlen是wcslen
::WideCharToMultiByte(CP_ACP, NULL, wszString, wcslen(wszString), szAnsi, ansiLen, NULL, NULL);
//最后加上'\0'
szAnsi[ansiLen] = '\0';
return szAnsi;
}
void test()
{
CString wpName = UnicodeToAnsi((wchar_t*)wupinName);
}
比如上面的test()函数调用UnicodeToAnsi函数,可是此函数中的char* szAnsi = new char[ansiLen + 1]语句申请了内存,那我每次调用UnicodeToAnsi函数会不会产生内存没释放的问题?该如何处理呢?不知道大家是如何处理字符转换问题的,求教了。
char* UnicodeToAnsi(wchar_t* wszString)
{
//预转换,得到所需空间的大小
int ansiLen = ::WideCharToMultiByte(CP_ACP, NULL, wszString, wcslen(wszString), NULL, 0, NULL, NULL);
//分配空间要给'\0'留个空间
char* szAnsi = new char[ansiLen + 1];
//转换
//unicode版对应的strlen是wcslen
::WideCharToMultiByte(CP_ACP, NULL, wszString, wcslen(wszString), szAnsi, ansiLen, NULL, NULL);
//最后加上'\0'
szAnsi[ansiLen] = '\0';
return szAnsi;
}
void test()
{
CString wpName = UnicodeToAnsi((wchar_t*)wupinName);
}
比如上面的test()函数调用UnicodeToAnsi函数,可是此函数中的char* szAnsi = new char[ansiLen + 1]语句申请了内存,那我每次调用UnicodeToAnsi函数会不会产生内存没释放的问题?该如何处理呢?不知道大家是如何处理字符转换问题的,求教了。