Opérations CString de base
Cette rubrique décrit les opérations CString de base suivantes :
Class CString
est basé sur le modèle de classe CStringT, classe. CString
est un typedef
de CStringT
. Plus précisément, CString
est une typedef
spécialisation explicite de , qui est un moyen courant d’utiliser un modèle de CStringT
classe pour définir une classe. Les classes définies de la même façon sont CStringA
et CStringW
.
CString
, CStringA
et CStringW
sont définis dans atlstr.h. CStringT
est défini dans cstringt.h.
CString
, CStringA
et CStringW
chacun obtient un ensemble de méthodes et d’opérateurs définis par CStringT
l’utilisation avec les données de chaîne qu’ils prennent en charge. Certaines des méthodes dupliquées et, dans certains cas, dépassent les services de chaîne des bibliothèques runtime C.
Remarque : CString
est une classe native. Pour une classe de chaîne à utiliser dans un projet managé C++/CLI, utilisez System.String
.
Création d’objets CString à partir de chaînes littérales C standard
Vous pouvez affecter des chaînes littérales de style C à un CString
objet tout comme vous pouvez l’affecter à un CString
autre.
Affectez la valeur d’une chaîne littérale C à un
CString
objet.CString myString = _T("This is a test");
Affectez la valeur d’un
CString
objet à un autreCString
.CString oldString = _T("This is a test"); CString newString = oldString;
Le contenu d’un
CString
objet est copié lorsqu’unCString
objet est affecté à un autre. Par conséquent, les deux chaînes ne partagent pas de référence aux caractères réels qui composent la chaîne. Pour plus d’informations sur l’utilisation d’objetsCString
en tant que valeurs, consultez CString Semantics.Remarque
Pour écrire votre application afin qu’elle puisse être compilée pour Unicode ou pour ANSI, les chaînes littérales de code à l’aide de la macro _T. Pour plus d’informations, consultez la prise en charge du jeu de caractères Unicode et multioctet (MBCS).
Accès à des caractères individuels dans une chaîne CString
Vous pouvez accéder à des caractères individuels dans un CString
objet à l’aide des méthodes et SetAt
des GetAt
méthodes. Vous pouvez également utiliser l’élément de tableau, ou l’indice, opérateur ( [ ] ) au lieu d’obtenir des GetAt
caractères individuels. (Cela ressemble à l’accès aux éléments de tableau par index, comme dans les chaînes de style C standard.) Les valeurs d’index pour CString
les caractères sont basées sur zéro.
Concaténation de deux objets CString
Pour concaténer deux CString
objets, 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 des opérateurs de concaténation (+ ou +=) doit être un CString
objet, mais vous pouvez utiliser une chaîne de caractères constante (par exemple) "big"
ou un char
(par exemple, 'x') pour l’autre argument.
Comparaison des objets CString
La Compare
méthode et l’opérateur == pour CString
sont équivalents. Compare
, operator==, et CompareNoCase
sont conscients de MBCS et Unicode ; CompareNoCase
n’est pas non plus sensible à la casse. La Collate
méthode de CString
paramètres régionaux respecte les paramètres régionaux et est souvent plus lente que Compare
. Utilisez Collate
uniquement l’endroit où vous devez respecter les règles de tri spécifiées par les paramètres régionaux actuels.
Le tableau suivant présente les fonctions de comparaison CString disponibles et leurs fonctions Unicode/MBCS-portables équivalentes dans la bibliothèque d’exécution C.
CString, fonction | MbCS, fonction | Fonction Unicode |
---|---|---|
Compare |
_mbscmp |
wcscmp |
CompareNoCase |
_mbsicmp |
_wcsicmp |
Collate |
_mbscoll |
wcscoll |
Le CStringT
modèle de classe définit les opérateurs relationnels (<, <=, >=, >==et !=), qui sont disponibles pour une utilisation par CString
. Vous pouvez comparer deux CStrings
à l’aide de ces opérateurs, comme illustré dans l’exemple suivant.
CString s1(_T("Tom"));
CString s2(_T("Jerry"));
ASSERT(s2 < s1);
Conversion d’objets CString
Pour plus d’informations sur la conversion d’objets CString en d’autres types de chaînes, consultez Comment : convertir entre différents types de chaînes.
Utilisation de CString avec wcout
Pour utiliser une chaîne CString avec wcout
vous devez convertir explicitement l’objet en un const wchar_t*
tel qu’illustré dans l’exemple suivant :
CString cs("meow");
wcout << (const wchar_t*) cs << endl;
Sans cast, cs
est traité comme un void*
et wcout
imprime l’adresse de l’objet. Ce comportement est dû à des interactions subtiles entre la déduction d’argument de modèle et la résolution de surcharge qui sont en soi correctes et conformes à la norme C++.
Voir aussi
Chaînes (ATL/MFC)
CStringT, classe
Spécialisation de modèle
Guide pratique pour effectuer une conversion entre différents types de chaînes