Opérations de base de CString
Cette rubrique décrit les opérations de base de CString suivantes :
Créer des objets de CString des chaînes littérales C standard
Différents caractères d'accès dans un CString
Concaténer deux objets de CString
Comparer des objets de CString
Convertir les objets de CString
Class CString est basé sur le modèle de classe Classe de CStringT.CString est typedef d' CStringT.Plus précisément, CString est typedefd'une spécialisation explicite d' CStringT, qui est un moyen courant d'utiliser un modèle de classe pour définir une classe.Les classes de même sont définies CStringA et CStringW.Pour plus d'informations sur la spécialisation explicite, consultez Instanciation du modèle de classe.
CString, CStringA, et CStringW sont définis dans atlstr.h.CStringT est défini dans cstringt.h.
CString, CStringA, et CStringW chaque obtenir un ensemble de méthodes et les opérateurs définis par CStringT à utiliser avec les données de chaîne qu'ils prennent en charge.Une partie du double de méthodes et, dans certains cas, surpasse les services de chaîne des bibliothèques runtime C.
Remarque : CString est une classe native.Pour une classe de chaîne qui est à utiliser dans le projet géré par ++/CLI c, utilisez System.String.
Créer des objets de CString des chaînes littérales C standard
Vous pouvez assigner des chaînes littérales de style C à CString de même que vous pouvez assigner un objet d' CString à un autre.
Assignez la valeur de la chaîne littérale c à un objet d' CString .
CString myString = _T("This is a test");
Assignez la valeur d'un CString à un autre objet d' CString .
CString oldString = _T("This is a test"); CString newString = oldString;
Le contenu d'un objet d' CString est copié lorsqu'un objet d' CString est assigné à un autre.Par conséquent, les deux chaînes ne partagent pas une référence aux caractères réels qui composent la chaîne.Pour plus d'informations sur l'utilisation des objets d' CString comme valeurs, consultez Sémantique de CString.
[!REMARQUE]
Pour écrire votre application afin qu'elle puisse être compilée pour Unicode ou pour ANSI, chaînes littérales de code à l'aide de la macro de _T.Pour plus d'informations, consultez Unicode et prise en charge du jeu de caractères multioctets (MBCS).
Différents caractères d'accès dans un CString
Vous pouvez accéder aux différents caractères d'un objet d' CString à l'aide de les méthodes d' GetAt et d' SetAt .Vous pouvez également utiliser l'élément de tableau, ou indice, opérateur ([]) au lieu d' GetAt pour obtenir des caractères.(Cela ressemble aux éléments de tableau à accéder par index, comme dans les chaînes de style C standard.) Les valeurs d'index des caractères d' CString sont de base zéro.
Concaténer deux objets de CString
Pour concaténer deux objets d' CString , utilisez les opérateurs de concaténation (+ ou +), comme suit.
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".
Au moins un argument aux opérateurs de concaténation (+ ou +) doit être un objet d' CString , mais vous pouvez utiliser une chaîne constante (par exemple, "big") ou un char (par exemple, « x ") pour l'autre argument.
Comparer des objets de CString
La méthode d' Compare et l'opérateur de == pour CString sont identiques.Compare, operator==, et CompareNoCase sont MBCS et Unicode avertis ; CompareNoCase est également la casse.La méthode d' Collate d' CString est sensible aux paramètres régionaux et est souvent plus lent qu' Compare.Utilisez Collate uniquement lorsque vous devez respecter les règles de tri comme spécifié par les paramètres régionaux.
Le tableau suivant montre les fonctions de comparaison disponibles de CString et leur équivalent Unicode/MBCS-portable fonctions de la bibliothèque Runtime C.
Fonction de CString |
Fonctions MBCS |
Fonction Unicode |
---|---|---|
Compare |
_mbscmp |
wcscmp |
CompareNoCase |
_mbsicmp |
_wcsicmp |
Collate |
_mbscoll |
wcscoll |
Le modèle de classe d' CStringT définit les opérateurs relationnels (<, <=, >=, >, ==, et ! =), qui sont disponibles pour une utilisation par d' CString.Vous pouvez comparer deux CStrings à l'aide de ces opérateurs, comme indiqué dans l'exemple suivant.
CString s1(_T("Tom"));
CString s2(_T("Jerry"));
ASSERT(s2 < s1);
Convertir les objets de CString
Pour plus d'informations sur la conversion des objets de CString à d'autres types de chaînes, consultez Comment : effectuer une conversion entre différents types de chaînes.
À l'aide de CString avec le wcout
Pour utiliser un CString avec wcout vous devez caster explicitement l'objet à const wchar_t* comme indiqué dans l'exemple suivant :
CString cs("meow");
wcout << (const wchar_t*) cs << endl;
Sans cast, cs est traité comme void* et wcout imprime l'adresse de l'objet.Ce comportement est provoqué par les interactions subtiles entre la déduction d'arguments template et la résolution de surcharge qui sont dans elles-mêmes corrects et conforme à la norme C++.
Voir aussi
Référence
Instanciation du modèle de classe
Spécialisation explicite des modèles de classe
Spécialisation partielle des modèles de classe (C++)
Concepts
Comment : effectuer une conversion entre différents types de chaînes