Sdílet prostřednictvím


CStringData – třída

Tato třída představuje data objektu string.

Syntaxe

struct CStringData

Členové

Metody

Název Popis
AddRef Zvýší početodkazůch
data Načte data znaků objektu řetězce.
IsLocked Určuje, zda je vyrovnávací paměť přidruženého objektu řetězce uzamčena.
IsShared Určuje, zda je vyrovnávací paměť přidruženého objektu řetězce aktuálně sdílena.
Uzamknout Uzamkne vyrovnávací paměť přidruženého objektu řetězce.
Vydaná verze Uvolní zadaný objekt řetězce.
Odemknout Odemkne vyrovnávací paměť přidruženého objektu řetězce.

Datové členy

Název Popis
nAllocLength Délka přidělených dat v XCHARs (nezahrnuje ukončení null)
nDataLength Délka aktuálně použitých dat v XCHARdatech (nezahrnuje ukončení hodnoty null)
nRefs Aktuální počet odkazů objektu.
pStringMgr Ukazatel na správce řetězců tohoto objektu řetězce.

Poznámky

Tuto třídu by měli používat jenom vývojáři, kteří implementují vlastní správce řetězců. Další informace o vlastních správcích řetězců naleznete v tématu Správa paměti a CStringT

Tato třída zapouzdřuje různé typy informací a dat přidružených k objektu vyššího řetězce, jako jsou CStringT, CSimpleStringT nebo CFixedStringT objekty. Každý objekt vyššího řetězce obsahuje ukazatel na přidružený CStringData objekt, který umožňuje více řetězcovým objektům odkazovat na stejný objekt řetězcových dat. Tento vztah je reprezentován počtem odkazů (nRefs) objektu CStringData .

Poznámka:

V některých případech typ řetězce (například CFixedString) nesdílí objekt dat řetězce s více než jedním objektem vyššího řetězce. Další informace o tom naleznete v tématu Správa paměti a CStringT.

Tato data se skládají z:

  • Správce paměti (typu IAtlStringMgr) řetězce.

  • Aktuální délka řetězce ( nDataLength).

  • Přidělená délka ( nAllocLength) řetězce. Z důvodů výkonu se to může lišit od aktuální délky řetězce.

  • Aktuální počet odkazů ( nRefs) objektu CStringData . Tato hodnota se používá k určení, kolik řetězcových objektů sdílí stejný CStringData objekt.

  • Skutečná vyrovnávací paměť znaků ( data) řetězce.

    Poznámka:

    Skutečná vyrovnávací paměť znaků objektu řetězce je přidělena správcem řetězců a je připojena k objektu CStringData .

Požadavky

Hlavička: atlsimpstr.h

CStringData::AddRef

Zvýší počet odkazů objektu string.

void AddRef() throw();

Poznámky

Zvýší počet odkazů objektu string.

Poznámka:

Tuto metodu nevolejte u řetězce s záporným počtem odkazů, protože záporný počet označuje, že vyrovnávací paměť řetězce je uzamčena.

CStringData::d ata

Vrátí ukazatel na vyrovnávací paměť znaků objektu řetězce.

void* data() throw();

Návratová hodnota

Ukazatel na vyrovnávací paměť znaků objektu řetězce.

Poznámky

Voláním této funkce vrátíte aktuální vyrovnávací paměť znaků přidruženého objektu řetězce.

Poznámka:

Tato vyrovnávací paměť není přidělena CStringData objektem, ale správcem řetězců v případě potřeby. Při přidělení se vyrovnávací paměť připojí k datovému objektu řetězce.

CStringData::IsLocked

Určuje, zda je vyrovnávací paměť znaku uzamčena.

bool IsLocked() const throw();

Návratová hodnota

Vrátí hodnotu TRUE, pokud je vyrovnávací paměť uzamčena; jinak NEPRAVDA.

Poznámky

Voláním této funkce určíte, jestli je aktuálně uzamčena vyrovnávací paměť znaků objektu řetězce.

CStringData::IsShared

Určuje, zda je sdílena vyrovnávací paměť znaků.

bool IsShared() const throw();

Návratová hodnota

Vrátí hodnotu TRUE, pokud je vyrovnávací paměť sdílena; jinak NEPRAVDA.

Poznámky

Voláním této funkce určíte, jestli je vyrovnávací paměť znaků datového objektu řetězce aktuálně sdílena mezi více řetězcovými objekty.

CStringData::Lock

Uzamkne vyrovnávací paměť znaků přidruženého objektu řetězce.

void Lock() throw();

Poznámky

Voláním této funkce zamknete vyrovnávací paměť znaků datového objektu řetězce. Uzamčení a odemčení se používá, když vývojář vyžaduje přímý přístup ke vyrovnávací paměti znaků. Dobrý příklad uzamčení je demonstrován LockBuffer a UnlockBuffer metody CSimpleStringT.

Poznámka:

Vyrovnávací paměť znaků může být uzamčena pouze v případě, že vyrovnávací paměť není sdílena mezi objekty vyššího řetězce.

CStringData::nAllocLength

Délka přidělené vyrovnávací paměti znaků.

int nAllocLength;

Poznámky

Uloží délku přidělené vyrovnávací paměti dat do XCHARs (nezahrnuje ukončení hodnoty null).

CStringData::nDataLength

Aktuální délka objektu řetězce.

int nDataLength;

Poznámky

Uloží délku aktuálně použitých dat do XCHARs (nezahrnuje ukončení hodnoty null).

CStringData::nRefs

Počet odkazů datového objektu řetězce.

long nRefs;

Poznámky

Uloží počet odkazů datového objektu řetězce. Tento počet označuje počet objektů vyššího řetězce, které jsou přidruženy k objektu dat řetězce. Záporná hodnota označuje, že datový objekt řetězce je aktuálně uzamčen.

CStringData::p StringMgr

Správce paměti přidruženého objektu řetězce.

IAtlStringMgr* pStringMgr;

Poznámky

Uloží správce paměti pro přidružený objekt řetězce. Další informace o správcích paměti a řetězcích naleznete v tématu Správa paměti a CStringT.

CStringData::Release

Sníží počet odkazů datového objektu řetězce.

void Release() throw();

Poznámky

Voláním této funkce snížíte počet odkazů a uvolníte CStringData strukturu, pokud počet odkazů dosáhne nuly. To se obvykle provádí při odstranění objektu řetězce, a proto už není nutné odkazovat na objekt dat řetězce.

Například následující kód by volal CStringData::Release objekt dat řetězce přidružený str1k:

{
   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

Odemkne vyrovnávací paměť znaků přidruženého objektu řetězce.

void Unlock() throw();

Poznámky

Voláním této funkce odemknete vyrovnávací paměť znaků datového objektu řetězce. Jakmile je vyrovnávací paměť odemknutá, je možné ji sdílet a lze ji spočítat.

Poznámka:

Každé volání, které Lock se má shodovat s odpovídajícím voláním Unlock.

Uzamčení a odemykání se používá, když vývojář musí zajistit, aby se řetězcová data nesdíleli. Dobrý příklad uzamčení je demonstrován LockBuffer a UnlockBuffer metody CSimpleStringT.

Viz také

Graf hierarchie
Sdílené třídy ATL/MFC