Partilhar via


Operações básicas de CString

Este tópico explica as seguintes operações básicas de CString :

Class CString baseia-se no modelo CStringTde classe. CString é um typedef dos CStringT. Mais exatamente, CString é uma typedefespecialização explícita de , que é uma maneira comum de usar um modelo de CStringTclasse para definir uma classe. Classes igualmente definidas são CStringA e CStringW.

CString, CStringAe CStringW são definidos em atlstr.h. CStringT é definido em cstringt.h.

CString, CStringAe CStringW cada um obtém um conjunto de métodos e operadores definidos por CStringT para uso com os dados de cadeia de caracteres suportados. Alguns dos métodos duplicam e, em alguns casos, superam os serviços de cadeia de caracteres das bibliotecas de tempo de execução C.

Nota: CString é uma classe nativa. Para uma classe de cadeia de caracteres que é para uso em um projeto gerenciado C++/CLI, use System.String.

Criando objetos CString a partir de cadeias de caracteres literais C padrão

Você pode atribuir cadeias de caracteres literais no estilo C a um CString da mesma forma que pode atribuir um CString objeto a outro.

  • Atribua o valor de uma cadeia de caracteres literal C a um CString objeto.

    CString myString = _T("This is a test");   
    
  • Atribua o valor de um CString a outro CString objeto.

    CString oldString = _T("This is a test");
    CString newString = oldString;
    

    O conteúdo de um CString objeto é copiado quando um CString objeto é atribuído a outro. Portanto, as duas cadeias de caracteres não compartilham uma referência aos caracteres reais que compõem a cadeia de caracteres. Para obter mais informações sobre como usar CString objetos como valores, consulte Semântica CString.

    Observação

    Para escrever seu aplicativo para que ele possa ser compilado para Unicode ou para ANSI, codifice cadeias de caracteres literais usando a macro _T. Para obter mais informações, consulte Suporte a Unicode e MBCS (Multibyte Character set).

Acessando caracteres individuais em um CString

Você pode acessar caracteres individuais em um CString objeto usando os GetAt métodos and SetAt . Você também pode usar o elemento de matriz, ou subscrito, operador ( [ ] ) em vez de GetAt para obter caracteres individuais. (Isso se assemelha a acessar elementos de matriz por índice, como em cadeias de caracteres padrão no estilo C.) Os valores de índice para CString caracteres são baseados em zero.

Concatenando dois objetos CString

Para concatenar dois CString objetos, use os operadores de concatenação (+ ou +=), da seguinte maneira.

CString s1 = _T("This ");        // Cascading concatenation
s1 += _T("is a ");
CString s2 = _T("test");
CString message = s1 + _T("big ") + s2;  
// Message contains "This is a big test".

Pelo menos um argumento para os operadores de concatenação (+ ou +=) deve ser um CString objeto, mas você pode usar uma cadeia de caracteres constante (por exemplo, "big") ou um char (por exemplo, 'x') para o outro argumento.

Comparando objetos CString

O Compare método e o operador == para CString são equivalentes. Compare, operador==, e CompareNoCase estão cientes de MBCS e Unicode; CompareNoCase também não diferencia maiúsculas de minúsculas. O Collate método de CString é sensível à localidade e geralmente é mais lento do que Compare. Use Collate somente onde você deve cumprir as regras de classificação, conforme especificado pela localidade atual.

A tabela a seguir mostra as funções de comparação CString disponíveis e suas funções equivalentes portáteis Unicode/MBCS na biblioteca de tempo de execução C.

Função CString Função MBCS Função Unicode
Compare _mbscmp wcscmp
CompareNoCase _mbsicmp _wcsicmp
Collate _mbscoll wcscoll

O CStringT modelo de classe define os operadores relacionais (<, <=, >=, >, ==, e !=), que estão disponíveis para uso pelo CString. Você pode comparar dois CStrings usando esses operadores, conforme mostrado no exemplo a seguir.

CString s1(_T("Tom"));
CString s2(_T("Jerry"));
ASSERT(s2 < s1);

Convertendo objetos CString

Para obter informações sobre como converter objetos CString em outros tipos de cadeia de caracteres, consulte Como converter entre vários tipos de cadeia de caracteres.

Usando CString com wcout

Para usar um CString com wcout você deve converter explicitamente o objeto para um const wchar_t* como mostrado no exemplo a seguir:

CString cs("meow");

wcout << (const wchar_t*) cs << endl;

Sem o elenco, cs é tratado como um void* e wcout imprime o endereço do objeto. Esse comportamento é causado por interações sutis entre dedução de argumento de modelo e resolução de sobrecarga que são, por si só, corretas e conformes com o padrão C++.

Ver também

Strings (ATL/MFC)
Classe CStringT
Especialização de modelos
Como: Converter entre vários tipos de cadeia de caracteres