古之成大事者,不唯有超世之才,亦唯有堅韌不拔之志也!

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            3 隨筆 :: 44 文章 :: 1 評論 :: 0 Trackbacks
          CString 是一種很特殊的 C++ 對象,它里面包含了三個值:一個指向某個數據緩沖區的指針、一個是該緩沖中有效的字符記數(它是不可存取的,是位于 CString 地址之下的一個隱藏區域)以及一個緩沖區長度。 有效字符數的大小可以是從0到該緩沖最大長度值減1之間的任何數(因為字符串結尾有一個NULL字符)。字符記數和緩沖區長度被巧妙隱藏。

          (1) char*轉換成CString

            若將char*轉換成CString,除了直接賦值外,還可使用CString::Format進行。例如:

                   char chArray[] = "Char  test";
                   TCHAR * p = _T("Char  test");( 或LPTSTR p = _T("Char  test");)
                   CString theString = chArray;
                   theString.Format(_T("%s"), chArray);
                   theString = p;

          (2) CString轉換成char*

          若將CString類轉換成char*(LPSTR)類型,常常使用下列三種方法:

          方法一,使用強制轉換。例如:

                 CString theString( (_T("Char test "));
                  LPTSTR lpsz =(LPTSTR)(LPCTSTR)theString;

          方法二,使用strcpy。例如:

                 CString theString( (_T("Char test "));
                 LPTSTR lpsz = new TCHAR[theString.GetLength()+1];
                  _tcscpy(lpsz, theString);

          需要說明的是,strcpy(或可移值的_tcscpy)的第二個參數是 const wchar_t* (Unicode)或const char* (ANSI),系統編譯器將會自動對其進行轉換。

          方法三,使用CString::GetBuffer。

                  如果你需要修改 CString 中的內容,它有一個特殊的方法可以使用,那就是 GetBuffer,它的作用是返回一個可寫的緩沖指針。 如果你只是打算修改字符或者截短字符串,例如:
                 CString s(_T("Char test "));
                  LPTSTR p = s.GetBuffer(); 

                  LPTSTR dot = strchr(p, ''.'');

                   // 在這里添加使用p的代碼

                    if(p != NULL) 

                   *p = _T('');
                   s.ReleaseBuffer();                     // 使用完后及時釋放,以便能使用其它的CString成員函數

                   在 GetBuffer 和 ReleaseBuffer 之間這個范圍,一定不能使用你要操作的這個緩沖的 CString 對象的任何方法。因為 ReleaseBuffer 被調用之前,該 CString 對象的完整性得不到保障。
           

          posted on 2008-12-23 10:02 goto 閱讀(32606) 評論(0)  編輯  收藏 所屬分類: C and C++

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 和平县| 安塞县| 常州市| 定边县| 平昌县| 德阳市| 平顺县| 屯昌县| 新营市| 宁安市| 临沭县| 丰都县| 连江县| 远安县| 玉林市| 罗江县| 汝南县| 淮阳县| 漯河市| 惠州市| 启东市| 隆林| 云浮市| 武夷山市| 建瓯市| 阿勒泰市| 永善县| 临武县| 故城县| 长宁县| 南丰县| 望谟县| 瑞金市| 呈贡县| 浦东新区| 新密市| 洱源县| 临泽县| 伊吾县| 鹿泉市| 沛县|