MultiByteToWideChar WideCharToMultiByte

转载 2007年09月20日 22:34:00

char sText[20] = {"多字节字符串!OK!"};
将MultiByteToWideChar()的第四个形参设为-1,即可返回所需的短字符数组空间的个数:
 DWORD dwNum = MultiByteToWideChar (CP_ACP, 0, sText, -1, NULL, 0);
 
 wchar_t *pwText;
 pwText = new wchar_t[dwNum];
 if(!pwText)
 {
 delete []pwText;
 }
   MultiByteToWideChar (CP_ACP, 0, psText, -1, sText, dwSize);
  delete []psText;
 

 同理,宽字符转为多字节字符的代码如下:
 wchar_t wText[20] = {L"宽字符转换实例!OK!"};
 DWORD dwNum = WideCharToMultiByte(CP_OEMCP,NULL,lpcwszStr,-1,NULL,0,NULL,FALSE);
 char *psText;
 psText = new char[dwNum];
 if(!psText)
 {
 delete []psText;
 }
 WideCharToMultiByte (CP_OEMCP,NULL,lpcwszStr,-1,psText,dwNum,NULL,FALSE);
 delete []psText;
 
 如果之前我们已经分配好空间,并且由于字符串较短,可以不理会浪费的空间,仅仅只是想简单地将短字符和宽字符相互转换,那有没有什么简便的方法呢
 WIN32 API里没有符合这种要求的函数,但我们可以自己进行封装:
 
 //-------------------------------------------------------------------------------------
 //Description:
 // This function maps a character string to a wide-character (Unicode) string
 //
 //Parameters:
 // lpcszStr: [in] Pointer to the character string to be converted
 // lpwszStr: [out] Pointer to a buffer that receives the translated string.
 // dwSize: [in] Size of the buffer
 //
 //Return Values:
 // TRUE: Succeed
 // FALSE: Failed
 //
 //Example:
 // MByteToWChar(szA,szW,sizeof(szW)/sizeof(szW[0]));
 //---------------------------------------------------------------------------------------
 BOOL MByteToWChar(LPCSTR lpcszStr, LPWSTR lpwszStr, DWORD dwSize)
 {
 // Get the required size of the buffer that receives the Unicode
 // string.
 DWORD dwMinSize;
 dwMinSize = MultiByteToWideChar (CP_ACP, 0, lpcszStr, -1, NULL, 0);
 
 if(dwSize < dwMinSize)
 {
 return FALSE;
 }
 
 
 // Convert headers from ASCII to Unicode.
 MultiByteToWideChar (CP_ACP, 0, lpcszStr, -1, lpwszStr, dwMinSize);
 return TRUE;
 }
 
 //-------------------------------------------------------------------------------------
 //Description:
 // This function maps a wide-character string to a new character string
 //
 //Parameters:
 // lpcwszStr: [in] Pointer to the character string to be converted
 // lpszStr: [out] Pointer to a buffer that receives the translated string.
 // dwSize: [in] Size of the buffer
 //
 //Return Values:
 // TRUE: Succeed
 // FALSE: Failed
 //
 //Example:
 // MByteToWChar(szW,szA,sizeof(szA)/sizeof(szA[0]));
 //---------------------------------------------------------------------------------------
 BOOL WCharToMByte(LPCWSTR lpcwszStr, LPSTR lpszStr, DWORD dwSize)
 {
 DWORD dwMinSize;
 dwMinSize = WideCharToMultiByte(CP_OEMCP,NULL,lpcwszStr,-1,NULL,0,NULL,FALSE);
 if(dwSize < dwMinSize)
 {
 return FALSE;
 }
 WideCharToMultiByte(CP_OEMCP,NULL,lpcwszStr,-1,lpszStr,dwSize,NULL,FALSE);
 return TRUE;
 }
 
 
 使用方法也很简单,示例如下:
 wchar_t wText[10] = {L"函数示例"};
 char sText[20]= {0};
 WCharToMByte(wText,sText,sizeof(sText)/sizeof(sText[0]));
 MByteToWChar(sText,wText,sizeof(wText)/sizeof(wText[0])); 

MultiByteToWideChar和WideCharToMultiByte的正确使用方法及参数详解,实现字符编码转换、宽字符和字符的转换

本文内容摘自《Windows核心编程》(第五版)Page26。   文中已经详细阐述了这两个函数的用法,我这里仅仅作为备忘录。函数的参数请参考百度百科MultiByteToWideChar和Wide...

WideCharToMultiByte和MultiByteToWideChar函数的用法

先看看这篇关于Windows编码的文章:http://blog.csdn.net/shyboy_nwpu/article/details/4431668   再看看这篇关于两个函数参数和用法的说明:...

MultiByteToWideChar和WideCharToMultiByte的正确使用方法及参数详解

本文内容摘自《Windows核心编程》(第五版)Page26。   文中已经详细阐述了这两个函数的用法,我这里仅仅作为备忘录。函数的参数请参考百度百科MultiByteToWideChar和Wide...
  • ccfxue
  • ccfxue
  • 2016年03月30日 11:27
  • 1192

ANIS与UNICODE字符格式转换:MultiByteToWideChar()和WideCharToMultiByte()函数介绍

第一个就是宽字符到多字节字符转换函数,函数原型如下: int WideCharToMultiByte( UINT CodePage, DWORD dwFlags, LPCWSTR lpWid...

(他山之石)MFC学习之路(四)MultiByteToWideChar和WideCharToMultiByte用法详解

转自墨雨博客:http://blog.csdn.net/norains/article/details/1461174 //=====================================...
  • QSCJOB
  • QSCJOB
  • 2012年05月14日 09:42
  • 1155

WideCharToMultiByte &MultiByteToWideChar

int WideCharToMultiByte( UINT CodePage, DWORD dwFlags, LPCWSTR lpWideCharStr, int cchWideCha...

关于MultiByteToWideChar及WideCharToMultiByte使用方法

API函数原型: 1. 多字节字符串转宽字节字符串。 int MultiByteToWideChar( _In_ UINT CodePage, // 代码页 _In...
  • cyousui
  • cyousui
  • 2013年11月24日 11:38
  • 694

WideCharToMultiByte和MultiByteToWideChar函数

//将unicode字符串转换为多字节字符串int WideCharToMultiByte(  UINT CodePage, //代码页,一般为CP_ACP  DWORD dwFlags, //额外标...

Windows,C/C++_字符串转换_MultiByteToWideChar和WideCharToMultiByte的正确使用方法及参数详解

MultiByteToWideChar和WideCharToMultiByte的正确使用方法及参数详解   本文内容摘自《Windows核心编程》(第五版)Page26。    ...

MultiByteToWideChar和WideCharToMultiByte用法详解 .

//======================================================================== //TITLE: //    MultiByt...
  • js_gary
  • js_gary
  • 2011年10月26日 15:32
  • 746
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:MultiByteToWideChar WideCharToMultiByte
举报原因:
原因补充:

(最多只允许输入30个字)