Condividi tramite


Classe CStringData

Questa classe rappresenta i dati di un oggetto stringa.

Sintassi

struct CStringData

Membri

Metodi

Nome Descrizione
Addref Incrementa il conteggio dei riferimenti dell'oggetto dati stringa.
data Recupera i dati di tipo carattere di un oggetto stringa.
IsLocked Determina se il buffer dell'oggetto stringa associato è bloccato.
Isshared Determina se il buffer dell'oggetto stringa associato è attualmente condiviso.
Blocca Blocca il buffer dell'oggetto stringa associato.
Versione Rilascia l'oggetto stringa specificato.
Sbloccare Sblocca il buffer dell'oggetto stringa associato.

Membri dei dati

Nome Descrizione
nAllocLength Lunghezza dei dati allocati in XCHARs (senza includere la terminazione null)
nDataLength Lunghezza dei dati attualmente usati in XCHARs (senza includere la terminazione null)
nRefs Conteggio dei riferimenti corrente dell'oggetto.
pStringMgr Puntatore al gestore di stringhe di questo oggetto stringa.

Osservazioni:

Questa classe deve essere usata solo dagli sviluppatori che implementano gestioni stringhe personalizzate. Per altre informazioni sulle gestioni stringhe personalizzate, vedere Gestione della memoria e CStringT

Questa classe incapsula vari tipi di informazioni e dati associati a un oggetto stringa superiore, ad esempio CStringT, CSimpleStringT o oggetti CFixedStringT. Ogni oggetto stringa superiore contiene un puntatore all'oggetto associato CStringData , consentendo a più oggetti stringa di puntare allo stesso oggetto dati stringa. Questa relazione è rappresentata dal conteggio dei riferimenti (nRefs) dell'oggetto CStringData .

Nota

In alcuni casi, un tipo stringa (ad esempio CFixedString) non condividerà un oggetto dati stringa con più di un oggetto stringa superiore. Per altre informazioni, vedere Gestione della memoria e CStringT.

Questi dati sono costituiti da:

  • Gestione memoria (di tipo IAtlStringMgr) della stringa.

  • Lunghezza corrente ( nDataLength) della stringa.

  • Lunghezza allocata ( nAllocLength) della stringa. Per motivi di prestazioni, ciò può differire dalla lunghezza della stringa corrente

  • Conteggio dei riferimenti corrente ( nRefs) dell'oggetto CStringData . Questo valore viene usato per determinare il numero di oggetti stringa che condividono lo stesso CStringData oggetto.

  • Buffer di caratteri effettivo ( dati) della stringa.

    Nota

    Il buffer di caratteri effettivo dell'oggetto stringa viene allocato dal gestore di stringhe e viene accodato all'oggetto CStringData .

Requisiti

Intestazione: atlsimpstr.h

CStringData::AddRef

Incrementa il conteggio dei riferimenti dell'oggetto stringa.

void AddRef() throw();

Osservazioni:

Incrementa il conteggio dei riferimenti dell'oggetto stringa.

Nota

Non chiamare questo metodo su una stringa con un conteggio dei riferimenti negativi, poiché un conteggio negativo indica che il buffer di stringa è bloccato.

CStringData::d ata

Restituisce un puntatore al buffer di caratteri di un oggetto stringa.

void* data() throw();

Valore restituito

Puntatore al buffer di caratteri dell'oggetto stringa.

Osservazioni:

Chiamare questa funzione per restituire il buffer di caratteri corrente dell'oggetto stringa associato.

Nota

Questo buffer non viene allocato dall'oggetto CStringData ma dal gestore di stringhe quando necessario. Se allocato, il buffer viene aggiunto all'oggetto dati stringa.

CStringData::IsLocked

Determina se il buffer dei caratteri è bloccato.

bool IsLocked() const throw();

Valore restituito

Restituisce TRUE se il buffer è bloccato; altrimenti FAL edizione Standard.

Osservazioni:

Chiamare questa funzione per determinare se il buffer di caratteri di un oggetto stringa è attualmente bloccato.

CStringData::IsShared

Determina se il buffer dei caratteri è condiviso.

bool IsShared() const throw();

Valore restituito

Restituisce TRUE se il buffer è condiviso; altrimenti FAL edizione Standard.

Osservazioni:

Chiamare questa funzione per determinare se il buffer di caratteri di un oggetto dati stringa è attualmente condiviso tra più oggetti stringa.

CStringData::Lock

Blocca il buffer di caratteri dell'oggetto stringa associato.

void Lock() throw();

Osservazioni:

Chiamare questa funzione per bloccare il buffer di caratteri dell'oggetto dati stringa. Il blocco e lo sblocco vengono usati quando l'accesso diretto al buffer dei caratteri è richiesto dallo sviluppatore. Un buon esempio di blocco è illustrato dai metodi LockBuffer e UnlockBuffer di CSimpleStringT.

Nota

Un buffer di caratteri può essere bloccato solo se il buffer non è condiviso tra oggetti stringa superiori.

CStringData::nAllocLength

Lunghezza del buffer di caratteri allocato.

int nAllocLength;

Osservazioni:

Archivia la lunghezza del buffer di dati allocato in XCHARs (senza includere la terminazione null).

CStringData::nDataLength

Lunghezza corrente dell'oggetto stringa.

int nDataLength;

Osservazioni:

Archivia la lunghezza dei dati attualmente usati in XCHARs (senza includere la terminazione null).

CStringData::nRefs

Conteggio dei riferimenti dell'oggetto dati stringa.

long nRefs;

Osservazioni:

Archivia il conteggio dei riferimenti dell'oggetto dati stringa. Questo conteggio indica il numero di oggetti stringa più elevati associati all'oggetto dati stringa. Un valore negativo indica che l'oggetto dati stringa è attualmente bloccato.

CStringData::p StringMgr

Gestore della memoria dell'oggetto stringa associato.

IAtlStringMgr* pStringMgr;

Osservazioni:

Archivia il gestore della memoria per l'oggetto stringa associato. Per altre informazioni su gestioni memoria e stringhe, vedere Gestione della memoria e CStringT.

CStringData::Release

Decrementa il conteggio dei riferimenti dell'oggetto dati stringa.

void Release() throw();

Osservazioni:

Chiamare questa funzione per decrementare il conteggio dei riferimenti, liberando la CStringData struttura se il conteggio dei riferimenti raggiunge zero. Questa operazione viene in genere eseguita quando un oggetto stringa viene eliminato e pertanto non deve più fare riferimento all'oggetto dati stringa.

Ad esempio, il codice seguente chiamerebbe CStringData::Release per l'oggetto dati stringa associato a str1:

{
   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

Sblocca il buffer di caratteri dell'oggetto stringa associato.

void Unlock() throw();

Osservazioni:

Chiamare questa funzione per sbloccare il buffer di caratteri dell'oggetto dati stringa. Una volta sbloccato un buffer, è condivisibile e può essere conteggiato come riferimento.

Nota

Ogni chiamata a Lock deve essere confrontata con una chiamata corrispondente a Unlock.

Il blocco e lo sblocco vengono usati quando lo sviluppatore deve assicurarsi che i dati stringa non vengano condivisi. Un buon esempio di blocco è illustrato dai metodi LockBuffer e UnlockBuffer di CSimpleStringT.

Vedi anche

Grafico della gerarchia
Classi condivise ATL/MFC