CString參數(shù)用于const void*的理解 收藏
比如一個函數(shù)接受一個字符串參數(shù)的輸入,里面對該字符串又沒有任何的修改,那么該參數(shù)就應(yīng)該定義成 const char*, 但是很多初學(xué)者弄不清const地用法,或者是懶, 總之就是隨意寫成了 char* 。 這樣子傳入CString時就需要強制的轉(zhuǎn)換一下。
這種做法是不安全的,也是不被建議的用法,你必須完全明白、確認該字符串沒有被修改。
CString 轉(zhuǎn)換到 LPTSTR (char*), 預(yù)定的做法是調(diào)用CString的GetBuffer函數(shù),使用完畢之后一般都要再調(diào)用ReleaseBuffer函數(shù)來確認修改 (某些情況下也有不調(diào)用ReleaseBuffer的,同樣你需要非常明確為什么這么做時才能這樣子處理,一般應(yīng)用環(huán)境可以不考慮這種情況)。
同時需要注意的是, 在GetBuffer 和 ReleaseBuffer之間,CString分配了內(nèi)存交由你來處理,因此不能再調(diào)用其他的CString函數(shù)。
CString 轉(zhuǎn)LPCTSTR:
CString cStr;
const char *lpctStr=(LPCTSTR)cStr;
LPCTSTR轉(zhuǎn)CString:
LPCTSTR lpctStr;
CString cStr=lpctStr;
const void* lpBuf //任意類型指針
CString 可以當(dāng)string用,當(dāng)用于指針參數(shù)時,可自動轉(zhuǎn)化為指針
不過最好加強制類型轉(zhuǎn)化,(不加強制類型轉(zhuǎn)化,有的編譯器可能報錯)
本文來自CSDN博客,轉(zhuǎn)載請標(biāo)明出處:http://blog.csdn.net/gtrl2599/archive/2009/07/14/4346728.aspx