vc中的數(shù)據(jù)類型
1
、CString?to?
char
*
//
經過類型強制轉換,可以將CString類型轉換成char*,例如:
CString?cStr?
=
?
"
Hello,world!
"
;
char
*
?zStr?
=
?(
char
*
)(LPCTSTR)cStr;
//
?cstring與int轉換
int
?StringToInt(CString?source)
{
????
char
?
*
buff?
=
?source.GetBuffer(source.GetLength());
????
int
?i?
=
?atoi(buff);
????source.ReleaseBuffer();
????
return
?i;
}
2
、
char
*
?to?CString
//
char*類型可以直接給CString,完成自動轉換,例如:
char
*
?zStr?
=
?
"
Hello,world!
"
;
CString?cStr?
=
?zStr;
3
、CString?to?LPCSTR
//
將CString轉換成LPCSTR,需要獲得CString的長度CString?cStr?=?_T("Hello,world!");
int
?nLen?
=
?cStr.GetLength();
LPCSTR?lpszBuf?
=
?cStr.GetBuffer(nLen);
4
、CString?to?LPSTR
//
這個和第3個技巧是一樣的,例如:
CString?cStr?
=
?_T(
"
Hello,world!
"
);
int
?nLen?
=
?str.GetLength();
LPSTR?lpszBuf?
=
?str.GetBuffer(nLen);
近日從網上以及自己的經驗,搜索了一些相關資料。
PCXSTR,如果不是在 Unicode 下,PCXSTR 與 const char* 是相同的;
CString 作為指向字符的非常數(shù)指針來直接訪問時,請使用 GetBuffer 和 ReleaseBuffer 成員函數(shù)。
使用 AllocSysString 和 SetSysString 成員函數(shù)來分配和設置用于自動化(以前稱為 OLE 自動化)中的 BSTR 對象。
一個 CString 對象可存儲多達 INT_MAX (2,147,483,647) 個字符。TCHAR 數(shù)據(jù)類型用來獲取或設置 CString 對象中的單個字符。與字符數(shù)組不同,CString 類具有內置內存分配能力。
從 MFC 4.0 版本開始,當復制 CString 對象時,MFC 增加引用計數(shù)而不是復制數(shù)據(jù)。這使得按值傳遞參數(shù)和按值返回 CString 對象更為高效。這些操作將調用復制構造函數(shù),有時甚至不只一次。增加引用計數(shù)會減少這些普通操作的系統(tǒng)開銷,并且使人更愿意使用 CString。
隨著每個副本的銷毀,原對象中的引用計數(shù)也會相應減少。直到原 CString 對象的引用計數(shù)減少到零時才會銷毀該對象。
可使用 CString 成員函數(shù) LockBuffer 和 UnlockBuffer 來禁用或啟用引用計數(shù)。



