Windows 下 Char 和Wchar的轉換

來源:互聯網
上載者:User

剛封裝了一個C的方法,碰到最多的就是char 和Wchar的轉化問題. 找了些資料:

 

1.標頭檔中要定義宏;       

   #define   UNICODE #define _UNICODE
2.char轉換成wchar      

  const   char   *pFilePathName   =    "c:\\aa.dll ";     

  int   nLen   =   strlen(pFilePathName)   +   1;      

  int   nwLen   =   MultiByteToWideChar(CP_ACP,   0,   pFilePathName,   nLen,   NULL,   0); 
 TCHAR   lpszFile[256];     

   MultiByteToWideChar(CP_ACP,   0,   pFilePathName,   nLen,   lpszFile,   nwLen);
3.wchar轉換成char        

   char   *pFilePathName;        

   TCHAR   lpszFile[256];     

   _tcscpy(lpszFile,   _T( "c:\\aa.dll "));
       int   nLen   =   wcslen(wstr)+1;        

   WideCharToMultiByte(CP_ACP,   0,   lpszFile,   nLen,   pFilePathName,   2*nLen,   NULL,   NULL);   

 

一個完整的例子(網上找的阿,要Ws2_32.lib)

1.#include <windows.h>  2.#include <stdio.h>  3.  4.//function: charTowchar  5.//purpose:char to WCHAR 、wchar_t、LPWSTR etc  6.void charTowchar(const char *chr, wchar_t *wchar, int size)  7.{     8.    MultiByteToWideChar( CP_ACP, 0, chr,  9.        strlen(chr)+1, wchar, size/sizeof(wchar[0]) );  10.}  11.  12.//function: wcharTochar  13.//purpose:WCHAR 、wchar_t、LPWSTR to char  14.void wcharTochar(const wchar_t *wchar, char *chr, int length)  15.{  16.    WideCharToMultiByte( CP_ACP, 0, wchar, -1,  17.        chr, length, NULL, NULL );  18.}  19.  20.int main (void)  21.{  22.    char     chr[128];  23.    wchar_t  *wchar = L"陳鴻欽";  24.      25.  26.    //wchar_t to char  27.    wcharTochar(wchar, chr, sizeof(chr));  28.    printf("char is %s\n", chr);  29.  30.    //char to wchar_t  31.    wchar = (wchar_t *)malloc(sizeof(wchar_t) * 64);  32.    charTowchar(chr, wchar, sizeof(wchar_t) * 64);  33.      34.    wprintf_s(L"%s\n", wchar);//  35.    getchar();  36.  37.    return 0;  38.}  

  另一個宏:

#include "atlconv.h" void func() {  USES_CONVERSION; char *test = "i am a sucker";  WCHAR *conv = A2W(strPic1) ; }

  

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.