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.
Este tópico explica as seguintes operações básicas de CString :
Class CString
baseia-se no modelo CStringT
de classe.
CString
é um typedef
dos CStringT
. Mais exatamente, CString
é uma typedef
especialização explícita de , que é uma maneira comum de usar um modelo de CStringT
classe para definir uma classe. Classes igualmente definidas são CStringA
e CStringW
.
CString
, CStringA
e CStringW
são definidos em atlstr.h.
CStringT
é definido em cstringt.h.
CString
, CStringA
e 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 outroCString
objeto.CString oldString = _T("This is a test"); CString newString = oldString;
O conteúdo de um
CString
objeto é copiado quando umCString
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 usarCString
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