Unicode 和 Ansi转换方法——wchar_t*、char*

时间:2022-06-07 20:16:55

1、单字节转宽字节(char* --> wchar_t*)

/*
**将单字节char*转化为宽字节wchar_t*
*/
inline wchar_t* AnsiToUnicode( const char* szStr )
{
int nLen = MultiByteToWideChar( CP_ACP, MB_PRECOMPOSED, szStr, -1, NULL, 0 );
if (nLen == 0)
{
return NULL;
}
wchar_t* pResult = new wchar_t[nLen];
MultiByteToWideChar( CP_ACP, MB_PRECOMPOSED, szStr, -1, pResult, nLen );
return pResult;
}
2、宽字节转单字节(wchar_t* --> char*)
/***将宽字节wchar_t*转化为单字节char*  */inline char* UnicodeToAnsi( const wchar_t* szStr )  {      int nLen = WideCharToMultiByte( CP_ACP, 0, szStr, -1, NULL, 0, NULL, NULL );      if (nLen == 0)      {          return NULL;      }      char* pResult = new char[nLen];      WideCharToMultiByte( CP_ACP, 0, szStr, -1, pResult, nLen, NULL, NULL );      return pResult;  }