CString const char*與char*之間的轉換關係

CString是個好東西,有很多好用的成員函數,並且動態分配內存空間。但在MFC學習初期,容易把CString與const char*,char*混淆。遇到三種類型數據轉換時,總是得過且過。下面就剖析一下三者之間的轉換關係與方法。
 
1、CString與const char*(LPCTSTR---是在Unicode環境下const char*的宏定義)
 
CString類提供一個const char*()把CString類型轉換爲LPCTSTR類型。
比如AfxMessageBox()的使用,可以採用:
char szMessageText[] = "Unknown error";
AfxMessageBox(szMessageText);
也可以這樣:
CString strMessageText("Unknown ;error");
AfxMessageBox(strMessageText);
 
CString類也提供了一個構造函式把LPCTSTR類型轉換爲CString類型。比如:
CString strTruth;
strTruth += " is alive";
 
2、CString與char*
調用CString::GetBuffer在Buffer中開闢一定大小的空間並返回一個char*。注意要在使用完char*後要調用CString::ReleaseBuffer以此保證CString的動態性。例如:
CString strTest("test");
strncpy(strTest.GetBuffer(5), "T", 1);
strTest.ReleaseBuffer();
ASSERT(strTest == "Test");
編寫以字符串爲參數的函數所遵循的規則:
a、如果函數不改寫字符串的內容並且要調用C Runtime的函數,那麼函數要用const char*類型參數;
b、如果函數不改寫字符串的內容並且要調用CString的成員函數,那麼函數要用const CString&類型參數;
c、如果函數要改寫字符串的內容,那麼函數要用CString&類型參數。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章