能力值:
( LV5,RANK:70 )
|
-
-
2 楼
delete szAnsi[];szAnsi=NULL;
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
new 后,用完记得 delete szAnsi ;
|
能力值:
( LV6,RANK:93 )
|
-
-
4 楼
的确没释放,既然都用CString,直接传个CString的引用或指针进去,假设参数为CString& str,在szAnsi[ansiLen] = '\0';后
str = szAnsi;
delete[] szAnsi;
return; //返回值自己定义
完整如下,仅供参考:
void UnicodeToAnsi(wchar_t* wszString, CString& str)
{
//预转换,得到所需空间的大小
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';
str = szAnsi;
delete [] szAnsi;
}
|
|
|