Megosztás:


CStringData osztály

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 objektumon CStringData .

  • A sztring tényleges karakterpuffere ( adatai).

    Megjegyzés:

    A sztringobjektum tényleges karakterpufferét a sztringkezelő lefoglalja, és hozzáfűzi az CStringData objektumhoz.

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.

Lásd még

hierarchiadiagram
ATL/MFC megosztott osztályok