C语言风格,不担心内存泄露 wchar_t *ANSIToUnicode(const char *str, wchar_t *wstr) { int Len = ::MultiByteToWideChar(CP_ACP,0,str,-1,NULL,0); wchar_t * pUnicode; pUnicode = new wchar_t[Len + 1]; memset(pUnicode, 0, (Len + 1)*sizeof(wchar_t)); ::MultiByteToWideChar(CP_ACP, 0, str, -1, pUnicode, Len); wcscpy(wstr, pUnicode); delete pUnicode; return wstr; } char *UnicodeToAnsi(const wchar_t *wstr, char *str) { int Len = ::WideCharToMultiByte(CP_ACP, 0, wstr, -1, NULL, 0, NULL, NULL); char * pChar; pChar = (char *)malloc((Len + 1)*sizeof(char)); memset(pChar, 0, (Len + 1)*sizeof(char)); ::WideCharToMultiByte(CP_ACP, 0, wstr, -1, pChar, Len, NULL, NULL); strcpy(str, pChar); delete pChar; return str; }