Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Observação
A biblioteca Microsoft Foundation Classes (MFC) e a Active Template Library (ATL) continuam a ser suportadas. No entanto, já não estamos a adicionar funcionalidades nem a atualizar a documentação.
Esta classe representa os dados de um objeto string.
Sintaxe
struct CStringData
Membros
Methods
| Nome | Description |
|---|---|
| AddRef | Incrementa a contagem de referência do objeto de dados da cadeia. |
| Dados | Recupera os dados de carácter de um objeto string. |
| IsLocked | Determina se o buffer do objeto string associado está bloqueado. |
| IsShared | Determina se o buffer do objeto string associado está atualmente partilhado. |
| Bloqueio | Bloqueia o buffer do objeto string associado. |
| Lançamento | Liberta o objeto string especificado. |
| Desbloquear | Desbloqueia o buffer do objeto string associado. |
Membros de Dados
| Nome | Description |
|---|---|
| nAllocLength | Comprimento dos dados alocados em XCHARs (excluindo a terminação nula) |
| nDataLength | Comprimento dos dados atualmente usados em XCHARs (excluindo a terminação nula) |
| nÁrbitros | A contagem atual de referências do objeto. |
| pStringMgr | Um apontador para o gestor de strings deste objeto string. |
Observações
Esta classe deve ser usada apenas por programadores que implementam gestores de strings personalizados. Para mais informações sobre gestores de strings personalizados, consulte Gestão de Memória e CStringT
Esta classe encapsula vários tipos de informação e dados associados a um objeto de string superior, como objetos CStringT, CSimpleStringT ou CFixedStringT . Cada objeto string superior contém um apontador para o seu objeto associado CStringData , permitindo que múltiplos objetos string apontem para o mesmo objeto de dados de string. Esta relação é representada pela contagem de referências (nRefs) do CStringData objeto.
Observação
Em certos casos, um tipo de cadeia (como CFixedString) não partilhará um objeto de dados de cadeia com mais do que um objeto de cadeia superior. Para mais informações sobre isto, consulte Gestão de Memória e CStringT.
Estes dados são compostos por:
O gestor de memória (do tipo IAtlStringMgr) da cadeia.
O comprimento atual ( nDataLength) da corda.
O comprimento atribuído ( nAllocLength) da corda. Por razões de desempenho, isto pode diferir do comprimento atual da corda
A contagem atual de referências ( nRefs) do
CStringDataobjeto. Este valor é usado para determinar quantos objetos string partilham o mesmoCStringDataobjeto.O buffer real de caracteres ( data) da cadeia.
Observação
O buffer de caracteres real do objeto string é alocado pelo gestor de string e é anexado ao
CStringDataobjeto.
Requerimentos
Cabeçalho: atlsimpstr.h
CStringData::AddRef
Incrementa a contagem de referência do objeto string.
void AddRef() throw();
Observações
Incrementa a contagem de referência do objeto string.
Observação
Não chame este método numa cadeia com uma contagem de referência negativa, pois uma contagem negativa indica que o buffer da cadeia está bloqueado.
CStringData::d ata
Devolve um ponteiro para o buffer de caracteres de um objeto string.
void* data() throw();
Valor de retorno
Um apontador para o buffer de caracteres do objeto string.
Observações
Chame esta função para devolver o buffer de caracteres atual do objeto string associado.
Observação
Este buffer não é alocado pelo CStringData objeto, mas sim pelo gestor de strings quando necessário. Quando alocado, o buffer é anexado ao objeto de dados da cadeia.
CStringData::IsLocked
Determina se o buffer de personagem está bloqueado.
bool IsLocked() const throw();
Valor de retorno
Retorna TRUE se o buffer estiver bloqueado; caso contrário, FALSO.
Observações
Chame esta função para determinar se o buffer de caracteres de um objeto string está atualmente bloqueado.
CStringData::IsShared
Determina se o buffer de personagem é partilhado.
bool IsShared() const throw();
Valor de retorno
Retorna TRUE se o buffer for partilhado; caso contrário, FALSO.
Observações
Chame esta função para determinar se o buffer de caracteres de um objeto de dados string está atualmente partilhado entre múltiplos objetos string.
CStringData::Lock
Bloqueia o buffer de caracteres do objeto string associado.
void Lock() throw();
Observações
Chame esta função para bloquear o buffer de caracteres do objeto de dados da cadeia. O bloqueio e desbloqueio é usado quando o desenvolvedor exige acesso direto ao buffer de personagens. Um bom exemplo de bloqueio é demonstrado pelos métodos LockBuffer e UnlockBuffer de CSimpleStringT.
Observação
Um buffer de caracteres só pode ser bloqueado se o buffer não for partilhado entre objetos de string superiores.
CStringData::nAllocLength
Comprimento do buffer de carácter atribuído.
int nAllocLength;
Observações
Armazena o comprimento do buffer de dados alocado em XCHARs (excluindo a terminação nula).
CStringData::nDataLength
Comprimento atual do objeto da corda.
int nDataLength;
Observações
Armazena o comprimento dos dados atualmente usados em XCHARs (excluindo a terminação nula).
CStringData::nRefs
Contagem de referências do objeto de dados da cadeia.
long nRefs;
Observações
Armazena a contagem de referência do objeto de dados da cadeia. Esta contagem indica o número de objetos string mais altos associados ao objeto de dados de string. Um valor negativo indica que o objeto de dados string está atualmente bloqueado.
CStringData::p StringMgr
O gestor de memória do objeto string associado.
IAtlStringMgr* pStringMgr;
Observações
Armazena o gestor de memória para o objeto string associado. Para mais informações sobre gestores de memória e strings, consulte Gestão de Memória e CStringT.
CStringData::Release
Diminui a contagem de referência do objeto de dados da cadeia.
void Release() throw();
Observações
Chame esta função para decrementar a contagem de referência, libertando a CStringData estrutura se a contagem de referência atingir zero. Isto é comum quando um objeto string é eliminado e, por isso, já não precisa de referenciar o objeto de dados string.
Por exemplo, o seguinte código chamaria CStringData::Release o objeto de dados string associado 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::Desbloquear
Desbloqueia o buffer de caracteres do objeto string associado.
void Unlock() throw();
Observações
Chame esta função para desbloquear o buffer de caracteres do objeto de dados da cadeia. Uma vez desbloqueado um buffer, é partilhável e pode ser contado por referência.
Observação
Cada chamada a Lock deve ser correspondida por uma chamada correspondente a Unlock.
O bloqueio e desbloqueio é usado quando o programador tem de garantir que os dados da cadeia não são partilhados. Um bom exemplo de bloqueio é demonstrado pelos métodos LockBuffer e UnlockBuffer de CSimpleStringT.