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

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

    • 分享

      CString與LPCWSTR、LPSTR、char*、LPWSTR等類型的轉換

       @IT小小鳥@ 2012-02-16


      一.CString與LPCWSTR 

          兩者的不同:LPCWSTR 是Unicode字符串指針,初始化時串有多大,申請空間就有多大,以后存貯若超過則出現無法預料的結果,這是它與CString的不同之處。而CString是一個串類,內存空間類會自動管理。

          CString轉換成LPCWSTR

          方法一:CString strFileName;

                           LPCWSTR lpcwStr = strFileName.AllocSysString();

          方法二:CString str=_T("TestStr"); 
                          USES_CONVERSION; 
                          LPCWSTR lpcwStr = A2CW((LPCSTR)str);

          MFC中CString和LPSTR是可以通用,其中A2CW表示(LPCSTR)  -> (LPCWSTR),USER_CONVERSION表示用來定義一些中間變量,在使用ATL的轉換宏之前必須定義該語句。

          LPCWSTR轉換成CString

          LPCWSTR lpcwStr = L"TestWStr"; 
          CString str(lpcwStr);

      二.CString與LPSTR轉換

           CString轉換成LPSTR:

          方法一:CString strFileName;

                          LPSTR lpStr = strFileName.GetBuffer();

                          strFileName.ReleaseBuffer();

           方法二:CString strFileName;

                           LPSTR lpStr = (LPSTR)(LPCSTR)strFimeName;

            LPSTR轉換成CString:

                            LPSTR lpStr = L"TestStr"; 
                            CString str(lpStr);

            注意:CString和LPCSTR可直接轉換,如下:

                           CString str;

                           LPCSTR lpcStr = (LPCSTR)str;

      三.CString和char*轉換
             CString轉換成char*
             方法一:CString str;
                             char* p = str.GetBuffer();
             方法二:CString str;
                             char* p = (LPSTR)(LPCSTR)str;
             char*轉換成CString
                             char* p = "test";
                             CString str = ("%s",p);

      四.String和int、float的轉換

              可以使用atoi,atof,atol等函數來完成。

      五.LPSTR(char*)和LPWSTR的轉換

              可以使用下面的ATL宏來進行,最好是將變量定義成TCHAR、LPTSTR等T類型,可以避免轉換。

      ATL宏介紹:

           A2BSTR   OLE2A             T2A            W2A 
           A2COLE   OLE2BSTR    T2BSTR    W2BSTR 
           A2CT         OLE2CA         T2CA          W2CA 
           A2CW        OLE2CT         T2COLE    W2COLE 
           A2OLE       OLE2CW       T2CW         W2CT 
           A2T            OLE2T            T2OLE        W2OLE 
           A2W           OLE2W          T2W             W2T

          A :ANSI 字符串,也就是 MBCS。 
          W、OLE 寬字符串,也就是 UNICODE。 
          T 中間類型T。如果定義了 _UNICODE,則T表示W;如果定義了 _MBCS,則T表示A 
          C const 的縮寫

      利用這些宏,可以快速的進行各種字符間的轉換。使用前必須包含頭文件,并且申明USER_CONVERSION;使用 ATL 轉換宏,由于不用釋放臨時空間,所以使用起來非常方便。但是考慮到??臻g的尺寸(VC 默認2M),使用時要注意幾點:

          1、只適合于進行短字符串的轉換; 
          2、不要試圖在一個次數比較多的循環(huán)體內進行轉換; 
          3、不要試圖對字符型文件內容進行轉換,因為文件尺寸一般情況下是比較大的; 
          4、對情況 2 和 3,要使用 MultiByteToWideChar() 和 WideCharToMultiByte();

      void Func1(LPSTR lpStr);

      void Func2(LPWSTR lpwStr);

      TCHAR   name[256];

      TCHAR*   pName = new  TCHAR[256];

      Func1(name); // Func1(pName);

      Func2(name); // Func2(pName);

      注意在VS2005中上面用紅色標記的代碼已經不成立。

      VS2005中CString已經改為寬字符型,一些轉換如下:

      char name[10];
       TCHAR sex[5] ;
       char *p = name;
       TCHAR *pw = sex;

       LPSTR lpstr = name;
       LPCSTR lpcstr = name;
       lpcstr = lpstr;
       
       lpstr = p;
       p = (char*)sex;
       pw = (WCHAR*)name;
       LPWSTR lpwstr = (LPWSTR)lpstr;
       lpwstr = (LPWSTR)lpcstr;
       LPCWSTR lpcwstr = (LPCWSTR)lpstr;
       lpcwstr = (LPCWSTR)name;

       CString str(lpstr);
       CString str1(lpcstr);
       CString str2(lpwstr);
       CString str3(lpcwstr);
       CString str4(name);
       CString str5(sex);

       lpwstr = (LPWSTR)(LPCWSTR)str;
       lpstr = (LPSTR)(LPCWSTR)str;
       lpcstr = (LPCSTR)(LPCWSTR)str;

       p = (char*)str.GetBuffer();
       pw = str.GetBuffer();

      可以看出轉換更加簡單了,基本上可以直接轉換,A2W等宏基本上不需要啦。

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

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多