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

            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++

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


          網站導航:
          博客園   IT新聞   Chat2DB   C++博客   博問  
           
          主站蜘蛛池模板: 辽阳县| 东丽区| 凤台县| 鲁山县| 梅河口市| 锦屏县| 旅游| 昌黎县| 凤台县| 涡阳县| 项城市| 阳西县| 名山县| 广宁县| 大悟县| 绥中县| 台东县| 渭源县| 竹溪县| 靖安县| 基隆市| 曲松县| 扬中市| 彰化市| 峨眉山市| 六安市| 雅安市| 甘南县| 道孚县| 宿州市| 沅陵县| 安康市| 瑞安市| 绿春县| 怀柔区| 锡林郭勒盟| 防城港市| 东光县| 介休市| 天气| 庆阳市|