1. char --> WCHAR
MultiByteToWideChar
int ConvertCharToWChar(char* pMultiByteStr, WCHAR* pWideCharStr, size_t BytesOfWideCharStr) { memset(pWideCharStr, 0, BytesOfWideCharStr); return MultiByteToWideChar(CP_ACP,0, pMultiByteStr, -1, pWideCharStr, BytesOfWideCharStr / 2 - 1); }
2. WCHAR --> char
WideCharToMultiByte
int ConvertWCharToChar(WCHAR* pWideCharStr, char* pMultiByteStr, size_t BytesOfCharStr) { memset(pMultiByteStr, 0, BytesOfCharStr); return WideCharToMultiByte(CP_ACP, 0, pWideCharStr, -1, pMultiByteStr, BytesOfCharStr - 1, NULL, NULL); }
3. CString --> char
void ConvertCStringToChar(CString& source, char* pMultiByteStr, size_t BytesOfCharStr) { memset(pMultiByteStr, 0, BytesOfCharStr); char* dest = pMultiByteStr; LPTSTR p = source.GetBuffer(); #ifdef UNICODE WideCharToMultiByte(CP_ACP, 0, p, -1, dest, BytesOfCharStr - 1, NULL, NULL); dest[BytesOfCharStr - 1] = '\0'; #else /*UNICODE*/ int i = 0; for (; i < (BytesOfCharStr - 1) && p[i] != 0; i++) { dest[i] = p[i]; } dest[i] = 0; #endif /*UNICODE*/ }
4. CString --> WCHAR
void ConvertCStringToWChar(CString& source, WCHAR* pWideCharStr, size_t BytesOfWideCharStr) { memset(pWideCharStr, 0, BytesOfWideCharStr); WCHAR* dest = pWideCharStr; int length = BytesOfWideCharStr / 2; LPTSTR p = source.GetBuffer(); #ifdef UNICODE int i = 0; for (; i < (length - 1) && p[i] != 0; i++ ) { dest[i] = p[i]; } dest[i] = 0; #else /*UNICODE*/ MultiByteToWideChar(CP_ACP,0, p, -1, dest, length - 1); dest[length - 1] = 0; #endif /*UNICODE*/ }
5. char --> CString
6. WCHAR --> CString