乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      wchar_t與char轉(zhuǎn)換(總結(jié))(轉(zhuǎn))

       匯英四方 2014-04-24

      #include<string>//標(biāo)準(zhǔn)C++;

      string   tp;
      wchar_t   *s;
      char   *d;
      tp=s;
      d=tp.c_str();
      也可使用WideCharToString(wchar_t   *   Source);函數(shù)轉(zhuǎn)換

      WideCharToMultiByte

      MultiByteToWideChar

       

      LPSTR = char *
      LPCSTR = const char *
      LPWSTR = wchar_t *
      LPCWSTR = const wchar_t *
      LPOLESTR = OLECHAR * = BSTR = LPWSTR(Win32)
      LPCOLESTR = const OLECHAR * = LPCWSTR(Win32)
      LPTSTR = _TCHAR *
      LPCTSTR = const _TCHAR *

       

      char 和 wchar_t相互轉(zhuǎn)化
      關(guān)鍵字: char 和 wchar_t相互轉(zhuǎn)化

      C代碼 復(fù)制代碼

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

      函數(shù)原型:
      int WideCharToMultiByte(
        UINT CodePage,
        DWORD dwFlags,
        LPCWSTR lpWideCharStr,
        int cchWideChar,
        LPSTR lpMultiByteStr,
        int cbMultiByte,
        LPCSTR lpDefaultChar,   
        LPBOOL lpUsedDefaultChar
      );

      參數(shù)說明:
      1、CodePage
      指定要轉(zhuǎn)換成的字符集代碼頁,它可以是任何已經(jīng)安裝的或系統(tǒng)自帶的字符集,可以選擇以下的代碼頁:
      CP_ACP         //當(dāng)前系統(tǒng)ANSI代碼頁
      CP_MACCP       //當(dāng)前系統(tǒng)Macintosh代碼頁
      CP_OEMCP       //當(dāng)前系統(tǒng)OEM代碼頁,一種原始設(shè)備制造商硬件掃描碼
      CP_SYMBOL      //Symbol代碼頁,用于Windows 2000及以后版本
      CP_THREAD_ACP  //當(dāng)前線程ANSI代碼頁,用于Windows 2000及以后版本
      CP_UTF7  //UTF-7,設(shè)置此值時lpDefaultChar和lpUsedDefaultChar都必須為NULL
      CP_UTF8  //UTF-8,設(shè)置此值時lpDefaultChar和lpUsedDefaultChar都必須為NULL

      2、dwFlags
      指定如何處理沒有轉(zhuǎn)換的字符,一般情況下設(shè)為0
      WC_NO_BEST_FIT_CHARS  //把不能直接轉(zhuǎn)換成相應(yīng)多字節(jié)字符的Unicode字符轉(zhuǎn)換成lpDefaultChar指定的默認(rèn)字符。
      WC_COMPOSITECHECK     //把合成字符轉(zhuǎn)換成預(yù)制的字符。它可以與后三個選項(xiàng)中的任何一個組合使用,如果沒有與他們中的任何一個組合,則與選項(xiàng)WC_SEPCHARS相同。
      WC_ERR_INVALID_CHARS  //此選項(xiàng)會致使函數(shù)遇到無效字符時失敗返回,并且GetLastError會返回錯誤碼ERROR_NO_UNICODE_TRANSLATION。否則函數(shù)會自動丟棄非法字符。此選項(xiàng)只能用于UTF8
      WC_DISCARDNS      //轉(zhuǎn)換時丟棄不占空間的字符,與WC_COMPOSITECHECK一起使用
      WC_SEPCHARS       //轉(zhuǎn)換時產(chǎn)生單獨(dú)的字符,此是默認(rèn)轉(zhuǎn)換選項(xiàng),與WC_COMPOSITECHECK一起使用
      WC_DEFAULTCHAR    //轉(zhuǎn)換時使用默認(rèn)字符代替例外的字符,(最常見的如"?"),與WC_COMPOSITECHECK一起使用

      3、lpWideCharStr  //要轉(zhuǎn)換的寬字符串
      4、cchWideChar    //要轉(zhuǎn)換寬字符串的長度,-1表示轉(zhuǎn)換到字符串結(jié)尾
      5、lpMultiByteStr //接收轉(zhuǎn)換后輸出的字符串的緩沖區(qū)
      6、cbMultiByte    //輸出緩沖區(qū)大小,如果為0,lpMultiByteStr將被忽略,函數(shù)將返回所需緩沖區(qū)大小而不使用lpMultiByteStr。
      7、lpDefaultChar  //指向字符的指針,在指定編碼里找不到相應(yīng)字符時使用此字符作為默認(rèn)字符代替,如果為NULL則使用系統(tǒng)默認(rèn)字符
      8、lpUsedDefaultChar  //開關(guān)變量的指針,用以表明是否使用過默認(rèn)字符,可設(shè)為NULL

      返回值:為0表示調(diào)用失敗

      下面就來看看如何將wstring和wchar_t*轉(zhuǎn)換為string和char*
      wstring轉(zhuǎn)換為string:
      wstring wstr=_T("翔翔糖糖");
      int size=WideCharToMultiByte(CP_ACP,0,wstr.c_str(),-1,NULL,0,NULL,NULL);
      char *ch=new char[size+1];
      if(!WideCharToMultiByte(CP_ACP,0,wstr.c_str(),-1,ch,size,NULL,NULL))
      {
          return false;
      }
      string str=ch;

      wchar_t*轉(zhuǎn)換為char*:
      wchar_t *wch=_T("翔翔糖糖");
      int size=WideCharToMultiByte(CP_ACP,0,wch,-1,NULL,0,NULL,NULL);
      char *ch=new char[size+1];
      if(!WideCharToMultiByte(CP_ACP,0,wch,-1,ch,size,NULL,NULL))
      {
          return false;
      }

      wchar_t* wstr = L"A wide character string.";

      char* ascii = new char[wcslen(wstr) + 1];

      wcstombs( ascii, wstr, wcslen(wstr) );

       

      另一種方法:                                                                                                                           char* localeInfo;                                                                                                                 wchar_t *pwchello = L"/x3042/x3043"; // 2 Hiragana characters                                       wchar_t *pwc;

      wchar_t*轉(zhuǎn)換為char*:                                                                                                        size_t size;                                                                                                                            int requiredSize;                                                                                                                   requiredSize = wcstombs( NULL, pwchello, 0);                                                                    pmbhello = (unsigned char *)malloc( requiredSize + 1);                                               size = wcstombs( pmbhello, pwchello, requiredSize + 1);

      char* 轉(zhuǎn)換為 wchar_t*                                                                                                       size_t size;                                                                                                                            int requiredSize;                                                                                                                   requiredSize = mbstowcs(NULL, pmbhello, 0);                                                                     pwc = (wchar_t *)malloc( (requiredSize + 1) * sizeof( wchar_t ));                                       size = mbstowcs( pwc, pmbhello, requiredSize + 1);

       

      請問怎么樣把string轉(zhuǎn)換到LPCTSTR

      std::string   str;
      LPCTSTR   lpstr   =   (LPCTSTR)str.c_str();

      MFC中Messagebox如何輸出數(shù)字

      轉(zhuǎn)自:http://blog.csdn.net/fengshalangzi/article/details/5815073

        本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多