[C++] 纯文本查看 复制代码
char *tchar_to_utf8(const TCHAR *str, char szStr)
{
#ifdef _UNICODE
int size = WideCharToMultiByte(CP_UTF8, 0, str, wcslen(str), NULL, 0, NULL, NULL);
char *str8 = (char *)malloc(size + 1);
WideCharToMultiByte(CP_UTF8, 0, str, wcslen(str), str8, size, NULL, NULL);
str8[size] = '\0';
return str8;
#else
return _strdup(str);
#endif
}
//将UNICODE字符串变换为窄字符串
void TcharToChar(const TCHAR *szTchar, char *szStr)
{
#ifdef _UNICODE
int size = WideCharToMultiByte(CP_ACP, 0, szTchar, wcslen(szTchar), NULL, 0, NULL, NULL);
char szTemp[1024] = { 0 };
WideCharToMultiByte(CP_ACP, 0, szTchar, wcslen(szTchar), szTemp, size, NULL, NULL);
strcpy(szStr, szTemp);
#else
return _strdup(str); //报错str未定义
#endif
//#ifdef _UNICODE
// int iLength;
// //获取字节长度
// iLength = WideCharToMultiByte(CP_ACP, 0, szTchar, -1, NULL, 0, NULL, NULL);
// //char szTemp[1024] = {0};
// WideCharToMultiByte(CP_OEMCP, WC_COMPOSITECHECK, szTchar, -1, szStr, iLength, NULL, NULL);
// //strcpy(szStr,szTemp);
//#else
// _tcscpy(szStr, szTchar);
//#endif
}
void CharToTchar(const char *szStr, TCHAR *szTchar)
{
#ifdef _UNICODE
int iLength;
iLength = MultiByteToWideChar(CP_ACP, 0, szStr, strlen(szStr) + 1, NULL, 0);
MultiByteToWideChar(CP_ACP, 0, szStr, strlen(szStr) + 1, szTchar, iLength);
#else
_tcscpy(szTchar, szStr);
#endif
}