Partager via


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 CStringTclasse pour définir une classe. Les classes définies de la même façon sont CStringA et CStringW.

CString, CStringAet CStringW sont définis dans atlstr.h. CStringT est défini dans cstringt.h.

CString, CStringAet 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 autre CString .

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

    Le contenu d’un CString objet est copié lorsqu’un CString 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’objets CString 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