Gerenciamento de dados de seqüência de caracteres
O Visual C++ fornece várias maneiras de gerenciar dados da seqüência de caracteres:
Manipulação de Cadeia de Caracteres (CRT) para trabalhar com seqüências de terminação nula estilo C.
Funções da API do Win32 para o gerenciamento de seqüências de caracteres
De classe do MFC Classe CStringT, que fornece objetos string flexível e dimensionável
De classeClasse CStringT, que fornece um objeto de seqüência de caracteres MFC independente com a mesma funcionalidade que CString
Quase todos os programas trabalham com dados da seqüência de caracteres.CString classe geralmente é a melhor solução para a manipulação de seqüência flexível. Começando com a versão 7.0, CString pode ser usado em programas do MFC ou independente do MFC. Tanto o em time de execução biblioteca e CString suporte a seqüências de caracteres contendo caracteres multibyte (horizontal), sistema autônomo em programação Unicode ou MBCS.
Este artigo descreve os serviços de uso Geral que a biblioteca de classes fornece relacionados à manipulação de seqüência de caracteres.Os tópicos abordados neste artigo incluem:
Unicode e MBCS fornecer portabilidade
CStrings e const char ponteiros
Contagem de referência de CString
The Classe CStringT classe fornece suporte para a manipulação de cadeias de caracteres. Destina-se a substituem e estendem a funcionalidade normalmente fornecida pelo pacote de seqüência de caracteres de biblioteca de time de execução C.The CString classe fornece funções de membro e simplificado de operadores para manipulação de seqüência de caracteres, semelhantes aos encontrados em Basic. A classe também fornece construtores e operadores para construir, atribuir e comparando CStrings e C++ padrão seqüência tipos de dados.Porque CString não é derivado de CObject, você pode usar CString objetos independentemente da maioria dos Microsoft Foundation classe biblioteca (MFC).
CStringos objetos seguem "valor semântica." A CString objeto representa um valor exclusivo. Imagine um CString sistema autônomo uma seqüência real, não sistema autônomo um ponteiro para uma seqüência de caracteres.
A CString objeto representa uma sequência de um número variável de caracteres. CString objetos podem ser pensados sistema autônomo matrizes de caracteres.
Unicode e MBCS fornecer portabilidade
Com o MFC versão 3.0 e posterior, MFC, inclusive CString, está habilitado para Unicode e conjuntos de caractere multibyte (MBCS). Esse suporte torna mais fácil para escrever aplicativos portáteis que você pode compilação para caracteres Unicode ou ANSI.Para ativar este portabilidade, cada caractere em um CString o objeto é do tipo TCHAR, que é definido sistema autônomo wchar_t Se você definir o símbolo _UNICODE quando você compilação seu aplicativo, ou sistema autônomo char Se não for. A wchar_t caractere é de 16 bits de largura. MBCS estará ativada se você cria com o símbolo _MBCS definido.MFC propriamente dito é criado com um a _MBCS símbolo (para bibliotecas NAFX) ou o _UNICODEsímbolo (para bibliotecas UAFX) definido.
Observação: |
---|
O CString exemplos desse e o que acompanha artigos em Mostrar seqüências de caracteres de seqüências de caracteres literais formatadas corretamente para portabilidade Unicode, usando o _T macro, que converte a seqüência literal para o formulário: |
L"literal string"
Observação: |
---|
que o compilador trata sistema autônomo uma seqüência de caracteres Unicode.Por exemplo, o código a seguir: |
CString strName = _T("Name");
Observação: |
---|
é traduzido sistema autônomo uma seqüência de caracteres Unicode se _UNICODE está definido ou sistema autônomo um ANSI string se não for.Para obter mais informações, consulte o artigo Unicode e multibyte conjunto de caractere Support (MBCS). |
A CString objeto pode armazenar até INT_MAX (2.147.483.647) caracteres.The TCHAR tipo de dados de é usado para obter ou conjunto caracteres individuais dentro de um CString objeto. Ao contrário de matrizes de caractere, a CString classe possui uma funcionalidade de alocação de memória interna. Isso permite que CString objetos para aumentar automaticamente conforme necessário (ou seja, não é necessário se preocupar em crescimento uma CString objeto para ajuste mais seqüências de caracteres).
CStrings e const char ponteiros
A CString objeto também pode atuar sistema autônomo uma estilo C seqüência literal (uma PCXSTR, que é o mesmo que Const char * se não está em Unicode).The CSimpleStringT::operador PCXSTR permite o operador de conversão CString objetos livremente seja substituído para ponteiros de caractere em chamadas de função. The CString( LPCWSTR pszSrc ) constructor allows character pointers to be substituted for CString objects.
Nenhuma tentativa de dobrar CString objetos. Se você fizer dois CString objetos que contêm Chicago, por exemplo, os caracteres em Chicago são armazenadas em dois lugares. (Pode não ser verdade para versões futuras do MFC, para que você não deve depender de ele.)
Observação: |
---|
Use o CSimpleStringT::GetBuffer e CSimpleStringT::ReleaseBuffer membro funciona quando você precisar acessar diretamente uma CString sistema autônomo um ponteiro nonconstant para um caractere. |
Observação: |
---|
Use o CStringT::AllocSysString e CStringT::SetSysString funções de membro para alocar e conjunto BSTR objetos usados na automação (anteriormente conhecida sistema autônomo automação OLE). |
Observação: |
---|
Sempre que possível, alocar CString objetos em quadro em vez de pilha. Isso salva a memória e simplifica o parâmetro passando. |
The CString classe não é implementado sistema autônomo uma classe de coleção da biblioteca Microsoft Foundation Class, porém CString objetos certamente podem ser armazenados sistema autônomo elementos em coleções.
Contagem de referência de CString
sistema autônomo do MFC versão 4.0, quando Classe CStringT sistema autônomo objetos são copiados, MFC incrementa uma contagem de referência em vez de copiar sistema autônomo dados. Isso torna a passagem de parâmetros por valor e retornando CString objetos de valor mais eficiente. Essas operações fazer com que o construtor de cópia seja chamado, às vezes, mais de uma vez.Incrementar uma contagem de referência reduz a sobrecarga para essas operações comuns e facilita o uso de CString uma opção mais atraente.
sistema autônomo cada cópia é destruída, a contagem de referência no objeto original é diminuída.O originalCString objeto será destruído até que sua contagem de referência seja reduzida a zero.
Você pode usar o CString funções de membro CSimpleStringT::LockBuffer e CSimpleStringT::UnlockBuffer Para desabilitar ou habilitar a contagem de referência.