Jegyzet
Az oldalhoz való hozzáférés engedélyezést igényel. Próbálhatod be jelentkezni vagy könyvtárat váltani.
Az oldalhoz való hozzáférés engedélyezést igényel. Megpróbálhatod a könyvtár váltását.
Megjegyzés:
A Microsoft Foundation Classes (MFC) és az Active Template Library (ATL) továbbra is támogatott. A továbbiakban azonban nem adunk hozzá funkciókat, és nem frissítjük a dokumentációt.
Ez az osztály egy sztringobjektum adatait jelöli.
Szemantika
struct CStringData
Tagok
Metódusok
| Név | Description |
|---|---|
| AddRef | Növeli a sztringadat-objektum referenciaszámát. |
| adat | Lekéri egy sztringobjektum karakteradatait. |
| IsLocked | Meghatározza, hogy a társított sztringobjektum puffere zárolva van-e. |
| IsShared | Meghatározza, hogy a társított sztringobjektum puffere jelenleg meg van-e osztva. |
| Zár | Zárolja a társított sztringobjektum pufferét. |
| Kiadás | Felszabadítja a megadott sztringobjektumot. |
| Kinyit | Feloldja a társított sztringobjektum pufferének zárolását. |
Adattagok
| Név | Description |
|---|---|
| nAllocLength | Az s-ben XCHARlefoglalt adatok hossza (a null értéket nem beleértve) |
| nDataLength | Az s-ben XCHARjelenleg használt adatok hossza (a null értéket nem beleértve) |
| nRefs | Az objektum aktuális hivatkozási száma. |
| pStringMgr | A sztringobjektum sztringkezelőjének mutatója. |
Megjegyzések
Ezt az osztályt csak egyéni sztringkezelőket implementáló fejlesztők használhatják. További információ az egyéni sztringkezelőkről: Memóriakezelés és CStringT
Ez az osztály különböző típusú információkat és adatokat foglal magában egy magasabb sztringobjektumhoz, például CStringT, CSimpleStringT vagy CFixedStringT objektumhoz. Minden magasabb sztringobjektum mutatót tartalmaz a társított CStringData objektumra, így több sztringobjektum is ugyanarra a sztringadat-objektumra mutathat. Ezt a kapcsolatot az objektum hivatkozási CStringData száma (nRefs) jelöli.
Megjegyzés:
Bizonyos esetekben egy sztringtípus (például CFixedString) nem oszt meg egy sztringadat-objektumot egynél több magasabb sztringobjektummal. Erről további információt a Memóriakezelés és a CStringT című témakörben talál.
Ezek az adatok a következőkből állnak:
A sztring memóriakezelője ( IAtlStringMgr típusú).
A sztring aktuális hossza ( nDataLength).
A sztring lefoglalt hossza ( nAllocLength). Teljesítménybeli okokból ez eltérhet az aktuális sztringhossztól
Az objektum aktuális hivatkozásszáma
CStringData(nRefs). Ez az érték annak meghatározására szolgál, hogy hány sztringobjektum osztozik ugyanazon az objektumonCStringData.A sztring tényleges karakterpuffere ( adatai).
Megjegyzés:
A sztringobjektum tényleges karakterpufferét a sztringkezelő lefoglalja, és hozzáfűzi az
CStringDataobjektumhoz.
Requirements
Fejléc: atlsimpstr.h
CStringData::AddRef
Növeli a sztringobjektum referenciaszámát.
void AddRef() throw();
Megjegyzések
Növeli a sztringobjektum referenciaszámát.
Megjegyzés:
Ne hívja meg ezt a metódust negatív hivatkozásszámú sztringen, mivel a negatív szám azt jelzi, hogy a sztringpuffer zárolva van.
CStringData::d ata
Egy sztringobjektum karakterpufferére mutató mutatót ad vissza.
void* data() throw();
Visszaadott érték
Mutató a sztringobjektum karakterpufferéhez.
Megjegyzések
Hívja meg ezt a függvényt a társított sztringobjektum aktuális karakterpufferének visszaadásához.
Megjegyzés:
Ezt a puffert nem az CStringData objektum, hanem szükség esetén a sztringkezelő foglalja le. Lefoglaláskor a rendszer hozzáfűzi a puffert a sztringadat-objektumhoz.
CStringData::IsLocked
Meghatározza, hogy a karakterpuffer zárolva van-e.
bool IsLocked() const throw();
Visszaadott érték
IGAZ értéket ad vissza, ha a puffer zárolva van; egyéb esetben HAMIS.
Megjegyzések
Hívja meg ezt a függvényt annak megállapításához, hogy egy sztringobjektum karakterpuffere jelenleg zárolva van-e.
CStringData::IsShared
Meghatározza, hogy a karakterpuffer meg van-e osztva.
bool IsShared() const throw();
Visszaadott érték
IGAZ értéket ad vissza, ha a puffer meg van osztva; egyéb esetben HAMIS.
Megjegyzések
Hívja meg ezt a függvényt annak megállapításához, hogy egy sztringadat-objektum karakterpuffere jelenleg több sztringobjektum között van-e megosztva.
CStringData::Lock
Zárolja a társított sztringobjektum karakterpufferét.
void Lock() throw();
Megjegyzések
Hívja meg ezt a függvényt a sztring adatobjektum karakterpufferének zárolásához. Zárolás és zárolás feloldása akkor használatos, ha a fejlesztőnek közvetlen hozzáférésre van szüksége a karakterpufferhez. A zárolás jó példáját a LockBuffer és az UnlockBuffer metódusok szemléltetik CSimpleStringT.
Megjegyzés:
A karakterpufferek csak akkor zárolhatók, ha a puffer nincs megosztva a magasabb sztringobjektumok között.
CStringData::nAllocLength
A lefoglalt karakterpuffer hossza.
int nAllocLength;
Megjegyzések
A lefoglalt adatpuffer hosszát s-ben XCHARtárolja (a null értéket nem beleértve).
CStringData::nDataLength
A sztringobjektum aktuális hossza.
int nDataLength;
Megjegyzések
Az aktuálisan használt adatok hosszát tárolja s-ben XCHAR(a null értéket nem beleértve).
CStringData::nRefs
A sztringadat-objektum hivatkozásszáma.
long nRefs;
Megjegyzések
A sztringadat-objektum referenciaszámát tárolja. Ez a szám a sztringadat-objektumhoz társított magasabb sztringobjektumok számát jelzi. A negatív érték azt jelzi, hogy a sztringadat-objektum jelenleg zárolva van.
CStringData::p StringMgr
A társított sztringobjektum memóriakezelője.
IAtlStringMgr* pStringMgr;
Megjegyzések
A társított sztringobjektum memóriakezelőjét tárolja. A memóriakezelőkkel és sztringekkel kapcsolatos további információkért lásd: Memóriakezelés és CStringT.
CStringData::Release
A sztringadat-objektum hivatkozásszámának megcétlése.
void Release() throw();
Megjegyzések
Hívja meg ezt a függvényt a hivatkozási szám csökkenéséhez, felszabadítva a CStringData struktúrát, ha a hivatkozási szám nullára csökken. Ez általában akkor fordul elő, ha egy sztringobjektumot törölnek, ezért már nem kell hivatkoznia a sztringadat-objektumra.
A következő kód például a következőhöz társított str1sztring adatobjektumot hívja CStringData::Release meg:
{
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
Feloldja a társított sztringobjektum karakterpufferét.
void Unlock() throw();
Megjegyzések
Hívja meg ezt a függvényt a sztring adatobjektum karakterpufferének feloldásához. A puffer feloldása után megosztható, és a hivatkozás megszámlálható.
Megjegyzés:
Minden hívásnak Lock egy megfelelő hívással kell egyeznie Unlock.
Zárolás és zárolás feloldása akkor használatos, ha a fejlesztőnek gondoskodnia kell arról, hogy a sztringadatok ne legyenek megosztva. A zárolás jó példáját a LockBuffer és az UnlockBuffer metódusok szemléltetik CSimpleStringT.