CStringData 類別
這個類別代表字串對象的數據。
語法
struct CStringData
成員
方法
名稱 | 描述 |
---|---|
AddRef | 遞增字串數據對象的參考計數。 |
data | 擷取字串物件的字元數據。 |
IsLocked | 判斷關聯字串對象的緩衝區是否已鎖定。 |
IsShared | 判斷關聯字串對象的緩衝區目前是否共用。 |
鎖定 | 鎖定相關聯字串對象的緩衝區。 |
版本 | 釋放指定的字串物件。 |
開鎖 | 解除鎖定相關聯字串對象的緩衝區。 |
資料成員
名稱 | 描述 |
---|---|
nAllocLength | 中 XCHAR 已設定資料的長度(不包括終止 Null) |
nDataLength | s 中 XCHAR 目前使用資料的長度(不包括終止 Null) |
nRefs | 物件的目前參考計數。 |
pStringMgr | 這個字串物件的字串管理員指標。 |
備註
這個類別應該只供實作自定義字串管理員的開發人員使用。 如需自定義字串管理員的詳細資訊,請參閱 記憶體管理和 CStringT
這個類別會封裝與較高字串對象相關聯的各種資訊和數據,例如 CStringT、 CSimpleStringT 或 CFixedStringT 物件。 每個較高的字串物件都包含其相關聯 CStringData
物件的指標,允許多個字元串物件指向相同的字串數據物件。 這個關聯性是由 對象的參考計數 (nRefs
) CStringData
表示。
注意
在某些情況下,字串類型 (例如 CFixedString
) 不會與一個以上的字串對象共用字串資料物件。 如需詳細資訊,請參閱 記憶體管理和 CStringT。
此資料是由:
字串的記憶體管理員(類型 為 IAtlStringMgr)。
字串的目前長度 ( nDataLength)。
字串的配置長度 ( nAllocLength)。 基於效能考慮,這可能與目前的字串長度不同
物件的目前參考計數 (nRefs)。
CStringData
此值用於判斷共用相同CStringData
物件的字串對象數量。字串的實際字元緩衝區( 數據)。
注意
字串對象的實際字元緩衝區是由字串管理員所配置,並附加至
CStringData
物件。
需求
標頭: atlsimpstr.h
CStringData::AddRef
遞增字串對象的參考計數。
void AddRef() throw();
備註
遞增字串對象的參考計數。
注意
請勿在具有負參考計數的字串上呼叫這個方法,因為負數表示字串緩衝區已鎖定。
CStringData::d ata
傳回字串物件的字元緩衝區指標。
void* data() throw();
傳回值
字串物件的字元緩衝區指標。
備註
呼叫此函式以傳回相關聯字串物件的目前字元緩衝區。
注意
此緩衝區不是由 物件配置, CStringData
而是由字串管理員在需要時配置。 配置時,緩衝區會附加至字串數據物件。
CStringData::IsLocked
判斷字元緩衝區是否已鎖定。
bool IsLocked() const throw();
傳回值
如果緩衝區已鎖定,則傳回 TRUE;否則為 FALSE。
備註
呼叫此函式,以判斷字串物件的字元緩衝區目前是否已鎖定。
CStringData::IsShared
判斷字元緩衝區是否共用。
bool IsShared() const throw();
傳回值
如果共用緩衝區,則傳回 TRUE;否則為 FALSE。
備註
呼叫此函式,以判斷字串數據物件的字元緩衝區目前是否在多個字串物件之間共用。
CStringData::Lock
鎖定相關聯字串物件的字元緩衝區。
void Lock() throw();
備註
呼叫此函式來鎖定字串數據物件的字元緩衝區。 開發人員需要直接存取字元緩衝區時,會使用鎖定和解除鎖定。 鎖定的良好範例是由 的LockBuffer 和 UnlockBuffer 方法 CSimpleStringT
示範。
注意
只有當緩衝區未在較高的字串對象之間共用時,才能鎖定字元緩衝區。
CStringData::nAllocLength
配置字元緩衝區的長度。
int nAllocLength;
備註
將配置的數據緩衝區長度儲存在 XCHAR
s 中(不包括終止 Null)。
CStringData::nDataLength
字串物件的目前長度。
int nDataLength;
備註
將目前使用的數據長度儲存在 XCHAR
s 中(不包括終止 Null)。
CStringData::nRefs
字串資料對象的參考計數。
long nRefs;
備註
儲存字串資料對象的參考計數。 此計數表示與字串數據對象相關聯的較高字串物件數目。 負值表示字串數據物件目前已鎖定。
CStringData::p StringMgr
相關聯字串物件的記憶體管理員。
IAtlStringMgr* pStringMgr;
備註
儲存相關聯字串物件的記憶體管理員。 如需記憶體管理員和字串的詳細資訊,請參閱 記憶體管理和 CStringT。
CStringData::Release
遞減字串數據對象的參考計數。
void Release() throw();
備註
呼叫此函式以遞減參考計數,如果參考計數達到零,則會 CStringData
釋放 結構。 這通常是在刪除字串物件時完成,因此不再需要參考字串數據物件。
例如,下列程式代碼會針對與str1
相關聯的字串資料物件呼叫 CStringData::Release
:
{
CString str1 = _T("Hello world"); // Allocates new CStringData
}
// str1 is deleted when it goes out of scope, so it releases its string data
CStringData::Unlock
解除鎖定相關聯字串物件的字元緩衝區。
void Unlock() throw();
備註
呼叫此函式以解除鎖定字串數據物件的字元緩衝區。 一旦解除鎖定緩衝區,就可以共用,而且可以計算參考計數。
注意
對的每個呼叫 Lock
都必須與 對應的呼叫 Unlock
相符。
當開發人員必須確保不會共用字串數據時,會使用鎖定和解除鎖定。 鎖定的良好範例是由 的LockBuffer 和 UnlockBuffer 方法 CSimpleStringT
示範。