CString

MFC使用CString類提供了對字符串的支持。CString類可以單獨應用於MFC框架的其他部分,因爲他不是由CObject類派生的,但與大多數MFC對象一樣,CString對象可以序列化。CString對象具有如下特性。

  • 可以使用CString對象任意替換Const char* 和LPCTSTR類型的函數參數。
  • CString對象遵循“值語義”,應將Cstring看做是一個真實的字符串而不是指向字符串的指針。
  • 通過轉換操作符,可以直接訪問該字符串的字符,就像訪問一個只讀字符數組一樣。
  • CString大小可變,可以作爲連接操作的結果而增大。
windows使用兩種字符集ANSI 和UNICODE。微軟提供了一些ANSI和UNICODE兼容的通用數據類型,最常用的由TCHAR,LPTSTR,LPCTSTR。CString是基於TCHAR數據類型的對象。

CString對象的內存分配

CString對象提供了動態內存分配,它是通過“引用”機制來管理分配的內存塊。實際上CString對象只有一個指針成員變量,所以任何CString實例的長度只有4字節,即:

int len =sizeof(CString); //len=4

CString 類型轉換

1、數值轉換爲字符

可以調用CString對象的Format方法格式化字符,如下面的代碼:

CString str;

float f = 123.354;

str.Format(_T("顯示浮點數:%f"),f);

2、CString轉換爲int

CString str("354");

itn iTemp = atoi(str);

如果準備使用Unicode字符,則應該使用_ttoi()函數,它在ANSI編碼系統中被編譯成_atoi(),在Unicode編碼系統中編譯成_wtoi(),如下面的代碼:

CString str(_T("352"));

int iTemp = _ttoi(str);

CString 和char*相互轉換

char* 轉爲CString非常簡單:

char* p="this is a test";

CString s = p;                             //還可以表示爲CString s(p);

CString 轉爲char*有下面幾種方法

(1)、使用GetBuffer函數

char *p;

CString str="hello";

p = str.getBuffer(str.GetLength());

str.ReleaseBuffer();

(2)、使用memcpy函數

CString mCS =_T("cxl");

char mch[20];

memcpy(mch,mCS,mCS.GetLength());

(3)、使用LPCTSTR強制類型轉換

char* ch;

CString str = _T("cxl");

ch = (LPSTR) (LPCTSTR) str;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章