La classe CStringT
Cette classe représente un CStringT
objet.
Syntaxe
template<typename BaseType, class StringTraits>
class CStringT :
public CSimpleStringT<BaseType,
_CSTRING_IMPL_::_MFCDLLTraitsCheck<BaseType, StringTraits>::c_bIsMFCDLLTraits>
Paramètres
BaseType
Type de caractère de la classe de chaîne. Il peut s'agir d'une des méthodes suivantes :
char
(pour les chaînes de caractères ANSI).wchar_t
(pour les chaînes de caractères Unicode).TCHAR
(pour les chaînes de caractères ANSI et Unicode).
StringTraits
Détermine si la classe de chaîne a besoin de la prise en charge de la bibliothèque CRT (C Run-Time) et de l’emplacement des ressources de chaîne. Il peut s'agir d'une des méthodes suivantes :
StrTraitATL<wchar_t | char | TCHAR, ChTraitsCRT<wchar_t | char | TCHAR>>
La classe nécessite la prise en charge CRT et recherche des chaînes de ressources dans le module spécifié par
m_hInstResource
(membre de la classe de module de l’application).StrTraitATL<wchar_t | char | TCHAR, ChTraitsOS<wchar_t | char |TCHAR>>
La classe ne nécessite pas de prise en charge CRT et recherche des chaînes de ressources dans le module spécifié par
m_hInstResource
(membre de la classe de module de l’application).StrTraitMFC<wchar_t | char | TCHAR, ChTraitsCRT<wchar_t | char | TCHAR>>
La classe nécessite la prise en charge crt et recherche des chaînes de ressources à l’aide de l’algorithme de recherche MFC standard.
StrTraitMFC<wchar_t | char | TCHAR, ChTraitsOS<wchar_t | char | TCHAR>>
La classe ne nécessite pas de prise en charge CRT et recherche des chaînes de ressources à l’aide de l’algorithme de recherche MFC standard.
Membres
Constructeurs publics
Nom | Description |
---|---|
CStringT::CStringT |
Construit un CStringT objet de différentes façons. |
CStringT::~CStringT |
Détruit un objet CStringT . |
Méthodes publiques
Nom | Description |
---|---|
CStringT::AllocSysString |
Alloue une BSTR donnée à partir de CStringT données. |
CStringT::AnsiToOem |
Effectue une conversion sur place du jeu de caractères ANSI vers le jeu de caractères OEM. |
CStringT::AppendFormat |
Ajoute des données mises en forme à un objet existant CStringT . |
CStringT::Collate |
Compare deux chaînes (respectant la casse, utilise des informations spécifiques aux paramètres régionaux). |
CStringT::CollateNoCase |
Compare deux chaînes (sans respect de la casse, utilise des informations spécifiques aux paramètres régionaux). |
CStringT::Compare |
Compare deux chaînes (respectant la casse). |
CStringT::CompareNoCase |
Compare deux chaînes (sans respect de la casse). |
CStringT::Delete |
Supprime un caractère ou des caractères d’une chaîne. |
CStringT::Find |
Recherche un caractère ou une sous-chaîne à l’intérieur d’une chaîne plus grande. |
CStringT::FindOneOf |
Recherche le premier caractère correspondant d’un jeu. |
CStringT::Format |
Met en forme la chaîne comme sprintf c’est le cas. |
CStringT::FormatMessage |
Met en forme une chaîne de message. |
CStringT::FormatMessageV |
Met en forme une chaîne de message à l’aide d’une liste d’arguments de variable. |
CStringT::FormatV |
Met en forme la chaîne à l’aide d’une liste variable d’arguments. |
CStringT::GetEnvironmentVariable |
Définit la chaîne sur la valeur de la variable d’environnement spécifiée. |
CStringT::Insert |
Insère un caractère unique ou une sous-chaîne à l’index donné dans la chaîne. |
CStringT::Left |
Extrait la partie gauche d’une chaîne. |
CStringT::LoadString |
Charge un objet existant CStringT à partir d’une ressource Windows. |
CStringT::MakeLower |
Convertit tous les caractères de cette chaîne en caractères minuscules. |
CStringT::MakeReverse |
Inverse la chaîne. |
CStringT::MakeUpper |
Convertit tous les caractères de cette chaîne en caractères majuscules. |
CStringT::Mid |
Extrait la partie centrale d’une chaîne. |
CStringT::OemToAnsi |
Effectue une conversion sur place du jeu de caractères OEM vers le jeu de caractères ANSI. |
CStringT::Remove |
Supprime les caractères indiqués d’une chaîne. |
CStringT::Replace |
Remplace les caractères indiqués par d’autres caractères. |
CStringT::ReverseFind |
Recherche un caractère à l’intérieur d’une chaîne plus grande ; commence à partir de la fin. |
CStringT::Right |
Extrait la partie droite d’une chaîne. |
CStringT::SetSysString |
Définit un objet existant BSTR avec des données d’un CStringT objet. |
CStringT::SpanExcluding |
Extrait les caractères de la chaîne, en commençant par le premier caractère, qui ne figurent pas dans l’ensemble de caractères identifiés par pszCharSet . |
CStringT::SpanIncluding |
Extrait une sous-chaîne qui contient uniquement les caractères d’un jeu. |
CStringT::Tokenize |
Extrait les jetons spécifiés dans une chaîne cible. |
CStringT::Trim |
Supprime tous les espaces blancs de début et de fin de la chaîne. |
CStringT::TrimLeft |
Supprime les espaces blancs de début de la chaîne. |
CStringT::TrimRight |
Supprime les espaces blancs de fin de la chaîne. |
Opérateurs
Nom | Description |
---|---|
CStringT::operator = |
Affecte une nouvelle valeur à un CStringT objet. |
CStringT::operator + |
Concatène deux chaînes, ou un caractère et une chaîne. |
CStringT::operator += |
Concatène une nouvelle chaîne à la fin d’une chaîne existante. |
CStringT::operator == |
Détermine si deux chaînes sont logiquement égales. |
CStringT::operator != |
Détermine si deux chaînes ne sont pas logiquement égales. |
CStringT::operator < |
Détermine si la chaîne sur le côté gauche de l’opérateur est inférieure à la chaîne du côté droit. |
CStringT::operator > |
Détermine si la chaîne sur le côté gauche de l’opérateur est supérieure à la chaîne du côté droit. |
CStringT::operator <= |
Détermine si la chaîne sur le côté gauche de l’opérateur est inférieure ou égale à la chaîne à droite. |
CStringT::operator >= |
Détermine si la chaîne sur le côté gauche de l’opérateur est supérieure ou égale à la chaîne sur le côté droit. |
Notes
CStringT
hérite de CSimpleStringT
la classe. Les fonctionnalités avancées, telles que la manipulation de caractères, l’ordre et la recherche, sont implémentées par CStringT
.
Remarque
CStringT
les objets sont capables de lever des exceptions. Cela se produit lorsqu’un CStringT
objet manque de mémoire pour une raison quelconque.
Un CStringT
objet se compose d’une séquence de caractères de longueur variable. CStringT
fournit des fonctions et des opérateurs utilisant une syntaxe similaire à celle de Basic. Les opérateurs de concaténation et de comparaison, ainsi que la gestion simplifiée de la mémoire, facilitent CStringT
l’utilisation des objets que les tableaux de caractères ordinaires.
Remarque
Bien qu’il soit possible de créer CStringT
des instances qui contiennent des caractères null incorporés, nous vous recommandons de le faire. L’appel de méthodes et d’opérateurs sur CStringT
des objets qui contiennent des caractères null incorporés peut produire des résultats inattendus.
En utilisant différentes combinaisons des paramètres et StringTraits
des BaseType
objets, CStringT
les objets peuvent se trouver dans les types suivants, qui ont été prédéfinis par les bibliothèques ATL.
Si vous utilisez dans une application ATL :
CString
, CStringA
et CStringW
sont exportés à partir de la DLL MFC (MFC90.DLL), jamais à partir de DLL utilisateur. Cela permet d’éviter CStringT
d’être défini plusieurs fois.
Remarque
Si votre code contient la solution de contournement pour les erreurs de l’éditeur de liens décrites dans l’exportation de classes de chaîne à l’aide de CStringT, vous devez supprimer ce code. Ce n'est plus nécessaire.
Les types de chaînes suivants sont disponibles dans les applications MFC :
Type CStringT | Déclaration |
---|---|
CStringA |
Chaîne de type caractère ANSI avec prise en charge CRT. |
CStringW |
Chaîne de type caractère Unicode avec prise en charge CRT. |
CString |
Types de caractères ANSI et Unicode avec prise en charge CRT. |
Les types de chaînes suivants sont disponibles dans les projets où ATL_CSTRING_NO_CRT
est défini :
Type CStringT | Déclaration |
---|---|
CAtlStringA |
Chaîne de type caractère ANSI sans prise en charge CRT. |
CAtlStringW |
Chaîne de type caractère Unicode sans prise en charge CRT. |
CAtlString |
Types de caractères ANSI et Unicode sans prise en charge CRT. |
Les types de chaînes suivants sont disponibles dans les projets où ATL_CSTRING_NO_CRT
il n’est pas défini :
Type CStringT | Déclaration |
---|---|
CAtlStringA |
Chaîne de type caractère ANSI avec prise en charge CRT. |
CAtlStringW |
Chaîne de type caractère Unicode avec prise en charge CRT. |
CAtlString |
Types de caractères ANSI et Unicode avec prise en charge CRT. |
CString
les objets ont également les caractéristiques suivantes :
CStringT
les objets peuvent croître en raison d’opérations de concaténation.CStringT
les objets suivent la « sémantique des valeurs ». Considérez unCStringT
objet comme une chaîne réelle, et non comme un pointeur vers une chaîne.Vous pouvez remplacer
CStringT
librement des objets pourPCXSTR
les arguments de fonction.Gestion de la mémoire personnalisée pour les mémoires tampons de chaîne. Pour plus d’informations, consultez Gestion de la mémoire et
CStringT
.
Types prédéfinis CStringT
Étant donné que CStringT
l’utilisation d’un argument de modèle pour définir le type de caractère (ou wchar_t
char
) pris en charge, les types de paramètres de méthode peuvent être compliqués à la fois. Pour simplifier ce problème, un ensemble de types prédéfinis est défini et utilisé dans toute la CStringT
classe. Le tableau suivant répertorie les différents types :
Nom | Description |
---|---|
XCHAR |
Caractère unique (ou wchar_t char ) avec le même type de caractère que l’objet CStringT . |
YCHAR |
Caractère unique (ou wchar_t char ) avec le type de caractère opposé en tant qu’objet CStringT . |
PXSTR |
Pointeur vers une chaîne de caractères (ou wchar_t char ) avec le même type de caractère que l’objet CStringT . |
PYSTR |
Pointeur vers une chaîne de caractères (ou wchar_t char ) avec le type de caractère opposé en tant qu’objet CStringT . |
PCXSTR |
Pointeur vers une const chaîne de caractères (ou char wchar_t ) avec le même type de caractère que l’objetCStringT . |
PCYSTR |
Pointeur vers une const chaîne de caractères (ou char wchar_t ) avec le type de caractère opposé en tant qu’objetCStringT . |
Remarque
Le code qui utilisait précédemment des méthodes non documentées de CString
(par exemple AssignCopy
) doit être remplacé par du code qui utilise les méthodes documentées suivantes ( CStringT
telles que GetBuffer
ou ReleaseBuffer
). Ces méthodes sont héritées de CSimpleStringT
.
Hiérarchie d'héritage
CStringT
Spécifications
En-tête | Utilisé pour |
---|---|
cstringt.h |
Objets de chaîne MFC uniquement |
atlstr.h |
Objets de chaîne non MFC |
CStringT::AllocSysString
Alloue une chaîne compatible Automation du type BSTR
et copie le contenu de l’objet CStringT
dans celui-ci, y compris le caractère null de fin.
BSTR AllocSysString() const;
Valeur de retour
Chaîne nouvellement allouée.
Notes
Dans les programmes MFC, une CMemoryException
classe est levée si la mémoire est insuffisante. Dans les programmes ATL, a CAtlException
été levée. Cette fonction est normalement utilisée pour retourner des chaînes pour Automation.
Généralement, si cette chaîne est passée à une fonction COM en tant que [in]
paramètre, l’appelant doit libérer la chaîne. Pour ce faire SysFreeString
, procédez comme décrit dans le Kit de développement logiciel (SDK) Windows. Pour plus d’informations, consultez Allocation et libération de la mémoire pour un BSTR
.
Pour plus d’informations sur les fonctions d’allocation OLE dans Windows, consultez SysAllocString
le Kit de développement logiciel (SDK) Windows.
Exemple
L'exemple suivant montre l'utilisation de CStringT::AllocSysString
.
// typedef CStringT<TCHAR, StrTraitATL<TCHAR, ChTraitsCRT<TCHAR>>> CAtlString;
CAtlString str(_T("This is a test string!"));
BSTR bstr = str.AllocSysString();
// bstr now contains "This is a test string!", and can be
// passed to any OLE function requiring a BSTR.
// Normally, if you pass the BSTR, you will
// need to free the string after returning from the function call.
CStringT::AnsiToOem
Convertit tous les caractères de cet CStringT
objet du jeu de caractères ANSI en jeu de caractères OEM.
void AnsiToOem();
Notes
La fonction n’est pas disponible si _UNICODE
elle est définie.
Exemple
// OEM character 252 on most IBM-compatible computers in
// many countries/regions is superscript n, as in 2^n.
// Converting it to the ANSI English charset results in a
// normal character 'n', which is the closest possible
// representation.
CStringT<char, StrTraitATL<char, ChTraitsCRT<char>>> str((WCHAR)252);
str.OemToAnsi();
ASSERT(str[0] == 'n');
// Be aware that in OEM to ANSI conversion the 'n'
// from the previous result cannot be converted back to
// a supsercript n because the system does not know what
// the character's value truly was.
str.AnsiToOem();
ASSERT(str[0] != 252);
ASSERT(str[0] == 'n');
CStringT::AppendFormat
Ajoute des données mises en forme à un objet existant CStringT
.
void __cdecl AppendFormat(PCXSTR pszFormat, [, argument] ...);
void __cdecl AppendFormat(UINT nFormatID, [, argument] ...);
Paramètres
pszFormat
Chaîne de contrôle de format.
nFormatID
Identificateur de ressource de chaîne qui contient la chaîne de contrôle de format.
argument
Arguments facultatifs.
Notes
Cette fonction met en forme et ajoute une série de caractères et de valeurs dans le CStringT
. Chaque argument facultatif (le cas échéant) est converti et ajouté conformément à la spécification de format correspondante dans pszFormat
ou à partir de la ressource de chaîne identifiée par nFormatID
.
Exemple
// typedef CStringT<TCHAR, StrTraitATL<TCHAR, ChTraitsCRT<TCHAR>>> CAtlString;
CAtlString str = _T("Some data:\t");
str.AppendFormat(_T("X value = %.2f\n"), 12345.12345);
_tprintf_s(_T("%s"), (LPCTSTR) str);
CStringT::Collate
Compare deux chaînes à l’aide de la fonction _tcscoll
de texte générique .
int Collate(PCXSTR psz) const throw();
Paramètres
psz
Autre chaîne utilisée pour la comparaison.
Valeur de retour
Zéro si les chaînes sont identiques, < 0 si cet CStringT
objet est inférieur psz
à , ou > 0 si cet CStringT
objet est supérieur psz
à .
Notes
La fonction _tcscoll
de texte générique , définie dans TCHAR.H
, est mappée à l’un strcoll
wcscoll
ou l’autre , ou _mbscoll
, selon le jeu de caractères défini au moment de la compilation. Chaque fonction effectue une comparaison sensible à la casse des chaînes en fonction de la page de codes actuellement utilisée. Pour plus d’informations, consultez strcoll
, , _mbscoll
_strcoll_l
wcscoll
, , _wcscoll_l
_mbscoll_l.
CStringT::CollateNoCase
Compare deux chaînes à l’aide de la fonction _tcscoll
de texte générique .
int CollateNoCase(PCXSTR psz) const throw();
Paramètres
psz
Autre chaîne utilisée pour la comparaison.
Valeur de retour
Zéro si les chaînes sont identiques (en ignorant la casse), < 0 si cet CStringT
objet est inférieur psz
à (en ignorant la casse) ou > 0 si cet CStringT
objet est supérieur psz
à (en ignorant le cas).
Notes
La fonction _tcscoll
de texte générique , définie dans TCHAR.H
, est mappée à l’un stricoll
wcsicoll
ou l’autre , ou _mbsicoll
, selon le jeu de caractères défini au moment de la compilation. Chaque fonction effectue une comparaison qui ne respecte pas la casse des chaînes, selon la page de codes actuellement utilisée. Pour plus d’informations, consultez strcoll
, , _mbscoll
wcscoll
_strcoll_l
, , . _mbscoll_l
_wcscoll_l
Exemple
// typedef CStringT<TCHAR, StrTraitATL<TCHAR, ChTraitsCRT<TCHAR>>> CAtlString;
CAtlString str1 = _T("Co-Op");
CAtlString str2 = _T("con");
int n;
// Collation uses language rules, such as ignoring dashes.
// NoCase version ignores case.
n = str1.CollateNoCase(str2);
ASSERT(n < 0);
// Comparison is a strict ASCII comparison with no language rules
// but still ignores case in NoCase version.
n = str1.CompareNoCase(str2);
ASSERT(n < 0);
CStringT::Compare
Compare deux chaînes (respectant la casse).
int Compare(PCXSTR psz) const;
Paramètres
psz
Autre chaîne utilisée pour la comparaison.
Valeur de retour
Zéro si les chaînes sont identiques, < 0 si cet CStringT
objet est inférieur psz
à , ou > 0 si cet CStringT
objet est supérieur psz
à .
Notes
La fonction _tcscmp
de texte générique , définie dans TCHAR.H
, est mappée à l’un strcmp
wcscmp
ou l’autre , ou _mbscmp
, selon le jeu de caractères défini au moment de la compilation. Chaque fonction effectue une comparaison sensible à la casse des chaînes et n’est pas affectée par les paramètres régionaux. Pour plus d’informations, consultez strcmp
, . _mbscmp
wcscmp
Si la chaîne contient des valeurs Null incorporées, à des fins de comparaison, la chaîne est considérée comme tronquée au premier caractère null incorporé.
Exemple
L'exemple suivant montre l'utilisation de CStringT::Compare
.
// typedef CStringT<TCHAR, StrTraitATL<TCHAR, ChTraitsCRT<TCHAR>>> CAtlString;
CAtlString s1(_T("abc"));
CAtlString s2(_T("abd"));
ASSERT(s1.Compare(s2) < 0); // Compare with another CAtlString.
ASSERT(s1.Compare(_T("abe")) < 0); // Compare with LPTSTR string.
CStringT::CompareNoCase
Compare deux chaînes (sans respect de la casse).
int CompareNoCase(PCXSTR psz) const throw();
Paramètres
psz
Autre chaîne utilisée pour la comparaison.
Valeur de retour
Zéro si les chaînes sont identiques (en ignorant la casse), <0 si cet CStringT
objet est inférieur psz
à (en ignorant la casse) ou >0 si cet CStringT
objet est supérieur psz
à (en ignorant le cas).
Notes
La fonction _tcsicmp
de texte générique, définie dans TCHAR.H
, est mappée à l’un _stricmp
_wcsicmp
ou _mbsicmp
l’autre, selon le jeu de caractères défini au moment de la compilation. Chaque fonction effectue une comparaison sans respect de la casse des chaînes. La comparaison dépend de l’aspect LC_CTYPE
des paramètres régionaux, mais pas LC_COLLATE
. Pour plus d’informations, consultez _stricmp
, , _mbsicmp
_wcsicmp
_stricmp_l
, , . _mbsicmp_l
_wcsicmp_l
Exemple
// typedef CStringT<TCHAR, StrTraitATL<TCHAR, ChTraitsCRT<TCHAR>>> CAtlString;
CAtlString s1(_T("abc"));
CAtlString s2(_T("ABD"));
ASSERT(s1.CompareNoCase(s2) < 0); // Compare with a CAtlString.
ASSERT(s1.CompareNoCase(_T("ABE")) < 0); // Compare with LPTSTR string.
CStringT::CStringT
Construit un objet CStringT
.
CStringT() throw() :
CThisSimpleString(StringTraits::GetDefaultManager());
explicit CStringT(IAtlStringMgr* pStringMgr) throw() :
CThisSimpleString( pStringMgr);
CStringT(const VARIANT& varSrc);
CStringT(const VARIANT& varSrc, IAtlStringMgr* pStringMgr);
CStringT(const CStringT& strSrc) :
CThisSimpleString( strSrc);
operator CSimpleStringT<
BaseType,
!_CSTRING_IMPL_::_MFCDLLTraitsCheck<BaseType, StringTraits>
:: c_bIsMFCDLLTraits> &()
template <bool bMFCDLL>
CStringT(const CSimpleStringT<BaseType, bMFCDLL>& strSrc) :
CThisSimpleString( strSrc);
template <class SystemString>
CStringT(SystemString^ pString) :
CThisSimpleString( StringTraits::GetDefaultManager());
CStringT(const XCHAR* pszSrc) :
CThisSimpleString( StringTraits::GetDefaultManager());
CSTRING_EXPLICIT CStringT(const YCHAR* pszSrc) :
CThisSimpleString( StringTraits::GetDefaultManager());
CStringT(LPCSTR pszSrc, IAtlStringMgr* pStringMgr) :
CThisSimpleString( pStringMgr);
CStringT(LPCWSTR pszSrc, IAtlStringMgr* pStringMgr) :
CThisSimpleString( pStringMgr);
CSTRING_EXPLICIT CStringT(const unsigned char* pszSrc) :
CThisSimpleString( StringTraits::GetDefaultManager());
/*CSTRING_EXPLICIT*/ CStringT(char* pszSrc) :
CThisSimpleString( StringTraits::GetDefaultManager());
CSTRING_EXPLICIT CStringT(unsigned char* pszSrc) :
CThisSimpleString( StringTraits::GetDefaultManager());
CSTRING_EXPLICIT CStringT(wchar_t* pszSrc) :
CThisSimpleString( StringTraits::GetDefaultManager());
CStringT(const unsigned char* pszSrc, IAtlStringMgr* pStringMgr) :
CThisSimpleString( pStringMgr);
CSTRING_EXPLICIT CStringT(char ch, int nLength = 1) :
CThisSimpleString( StringTraits::GetDefaultManager());
CSTRING_EXPLICIT CStringT(wchar_t ch, int nLength = 1) :
CThisSimpleString( StringTraits::GetDefaultManager());
CStringT(const XCHAR* pch, int nLength) :
CThisSimpleString( pch, nLength, StringTraits::GetDefaultManager());
CStringT(const YCHAR* pch, int nLength) :
CThisSimpleString( StringTraits::GetDefaultManager());
CStringT(const XCHAR* pch, int nLength, AtlStringMgr* pStringMgr) :
CThisSimpleString( pch, nLength, pStringMgr);
CStringT(const YCHAR* pch, int nLength, IAtlStringMgr* pStringMgr) :
CThisSimpleString( pStringMgr);
Paramètres
pch
Pointeur vers un tableau de caractères de longueur nLength
, et non terminé par null.
nLength
Nombre de caractères dans pch
.
ch
Caractère unique.
pszSrc
Chaîne terminée par null à copier dans cet CStringT
objet.
pStringMgr
Pointeur vers le gestionnaire de mémoire de l’objet CStringT
. Pour plus d’informations sur IAtlStringMgr
la gestion de la mémoire, CStringT
consultez Gestion de la mémoire avec CStringT.
strSrc
Objet existant CStringT
à copier dans cet CStringT
objet. Pour plus d’informations sur et CThisSimpleString
pour plus d’informationsCThisString
, consultez la section Remarques.
varSrc
Objet variant à copier dans cet CStringT
objet.
BaseType
Type de caractère de la classe de chaîne. Il peut s'agir d'une des méthodes suivantes :
char
(pour les chaînes de caractères ANSI).
wchar_t
(pour les chaînes de caractères Unicode).
TCHAR
(pour les chaînes de caractères ANSI et Unicode).
bMFCDLL
Boolean qui spécifie si le projet est une DLL MFC () ouTRUE
non (FALSE
).
SystemString
Doit être System::String
, et le projet doit être compilé avec /clr
.
pString
Handle pour un CStringT
objet.
Notes
Étant donné que les constructeurs copient les données d’entrée dans un nouveau stockage alloué, des exceptions de mémoire peuvent se produire. Certains de ces constructeurs agissent en tant que fonctions de conversion. Cela vous permet de remplacer, par exemple, un LPTSTR
objet dans lequel un CStringT
objet est attendu.
CStringT
(LPCSTR
lpsz
) : construit un UnicodeCStringT
à partir d’une chaîne ANSI. Vous pouvez également utiliser ce constructeur pour charger une ressource de chaîne, comme illustré dans l’exemple ci-dessous.CStringT(
LPCWSTR
lpsz
: construit àCStringT
partir d’une chaîne Unicode.CStringT
(const unsigned char*
psz
) : vous permet de construire unCStringT
pointeur versunsigned char
.
Remarque
Définissez la macro pour désactiver la _CSTRING_DISABLE_NARROW_WIDE_CONVERSION
conversion implicite de chaînes entre les chaînes ANSI et Unicode. La macro exclut des constructeurs de compilation qui prennent en charge la conversion.
Le strSrc
paramètre peut être un ou CThisSimpleString
un CStringT
objet. Pour CStringT
, utilisez l’une de ses instanciations par défaut (CString
, CStringA
ou CStringW
) ; pour , utilisez CThisSimpleString
un this
pointeur. CThisSimpleString
déclare une instance de la CSimpleStringT
classe, qui est une classe de chaîne plus petite avec moins de fonctionnalités intégrées que la CStringT
classe.
L’opérateur CSimpleStringT<>&()
de surcharge construit un CStringT
objet à partir d’une CSimpleStringT
déclaration.
Remarque
Bien qu’il soit possible de créer CStringT
des instances qui contiennent des caractères null incorporés, nous vous recommandons de le faire. L’appel de méthodes et d’opérateurs sur CStringT
des objets qui contiennent des caractères null incorporés peut produire des résultats inattendus.
Exemple
// typedef CStringT<TCHAR, StrTraitATL<TCHAR, ChTraitsCRT<TCHAR>>> CAtlString;
CAtlString s1; // Empty string
CAtlString s2(_T("cat")); // From a C string literal
CAtlString s3 = s2; // Copy constructor
CAtlString s4(s2 + _T(" ") + s3); // From a string expression
CAtlString s5(_T('x')); // s5 = "x"
CAtlString s6(_T('x'), 6); // s6 = "xxxxxx"
CAtlString s7((LPCSTR)ID_FILE_NEW); // s7 = "Create a new document"
VARIANT var;
V_VT(&var) = VT_BSTR;
V_BSTR(&var) = ::SysAllocString(L"Football is a fun sport.");
CAtlString s8(var); // s8 = "Football is a fun sport."
// The following statement does not call the assignment operator.
// The compiler considers the following statement equivalent to
// CAtlString city("Paris")
CAtlString city = _T("Paris");
CStringT::~CStringT
Détruit l’objet CStringT
.
~CStringT() throw();
Notes
Détruit l’objet CStringT
.
CStringT::Delete
Supprime un caractère ou des caractères d’une chaîne commençant par le caractère à l’index donné.
int Delete(int iIndex, int nCount = 1);
Paramètres
iIndex
Index de base zéro du premier caractère de l’objet CStringT
à supprimer.
nCount
Nombre de caractères à supprimer.
Valeur de retour
Longueur de la chaîne modifiée.
Notes
Si nCount
elle est plus longue que la chaîne, le reste de la chaîne est supprimé.
Exemple
// typedef CStringT<TCHAR, StrTraitATL<TCHAR, ChTraitsCRT<TCHAR>>> CAtlString;
CAtlString str(_T("Soccer is best, but hockey is quicker!"));
_tprintf_s(_T("Before: %s\n"), (LPCTSTR)str);
int n = str.Delete(6, 3);
_tprintf_s(_T("After: %s\n"), (LPCTSTR)str);
ASSERT(n == str.GetLength());
Before: Soccer is best,
but hockey is quicker!
After: Soccer best,
but hockey is quicker!
CStringT::Find
Recherche cette chaîne pour la première correspondance d’un caractère ou d’une sous-chaîne.
int Find(PCXSTR pszSub, int iStart=0) const throw();
int Find(XCHAR ch, int iStart=0) const throw();
Paramètres
pszSub
Sous-chaîne à rechercher.
iStart
Index du caractère dans la chaîne avec lequel commencer la recherche, ou 0 pour commencer à partir du début.
ch
Caractère unique à rechercher.
Valeur de retour
Index de base zéro du premier caractère de cet CStringT
objet qui correspond à la sous-chaîne ou aux caractères demandés ; -1 si la sous-chaîne ou le caractère n’est pas trouvé.
Notes
La fonction est surchargée pour accepter à la fois des caractères uniques (similaires à la fonction strchr
d’exécution) et des chaînes (similaires à strstr
).
Exemple
// typedef CStringT<TCHAR, StrTraitATL<TCHAR, ChTraitsCRT<TCHAR>>> CAtlString;
CAtlString s(_T("abcdef"));
ASSERT(s.Find(_T('c')) == 2);
ASSERT(s.Find(_T("de")) == 3);
CAtlString str(_T("The waves are still"));
int n = str.Find(_T('e'), 5);
ASSERT(n == 7);
CStringT::FindOneOf
Recherche cette chaîne pour le premier caractère qui correspond à n’importe quel caractère contenu dans pszCharSet
.
int FindOneOf(PCXSTR pszCharSet) const throw();
Paramètres
pszCharSet
Chaîne contenant des caractères correspondants.
Valeur de retour
Index de base zéro du premier caractère de cette chaîne qui est également dans pszCharSet
; -1 s’il n’y a pas de correspondance.
Notes
Recherche la première occurrence de l’un des caractères dans pszCharSet
.
Exemple
// typedef CStringT<TCHAR, StrTraitATL<TCHAR, ChTraitsCRT<TCHAR>>> CAtlString;
CAtlString s(_T("abcdef"));
ASSERT(s.FindOneOf(_T("xd")) == 3); // 'd' is first match
CStringT::Format
Écrit des données mises en forme dans une CStringT
même façon que les sprintf_s
données dans un tableau de caractères de style C.
void __cdecl Format(UINT nFormatID, [, argument]...);
void __cdecl Format(PCXSTR pszFormat, [, argument] ...);
Paramètres
nFormatID
Identificateur de ressource de chaîne qui contient la chaîne de contrôle de format.
pszFormat
Chaîne de contrôle de format.
argument
Arguments facultatifs.
Notes
Cette fonction met en forme et stocke une série de caractères et de valeurs dans le CStringT
. Chaque argument facultatif (le cas échéant) est converti et généré en fonction de la spécification de format correspondante dans pszFormat
ou à partir de la ressource de chaîne identifiée par nFormatID
.
L’appel échoue si l’objet de chaîne lui-même est proposé en tant que paramètre à Format
. Par exemple, le code suivant entraîne des résultats imprévisibles :
CAtlString str = _T("Some Data");
str.Format(_T("%s%d"), str, 123);
// Attention: str is also used in the parameter list.
Pour plus d’informations, consultez Syntaxe de spécification de format : printf
et wprintf
Fonctions.
Exemple
// typedef CStringT<TCHAR, StrTraitATL<TCHAR, ChTraitsCRT<TCHAR>>> CAtlString;
CAtlString str;
str.Format(_T("Floating point: %.2f\n"), 12345.12345);
_tprintf_s(_T("%s"), (LPCTSTR) str);
str.Format(_T("Left-justified integer: %.6d\n"), 35);
_tprintf_s(_T("%s"), (LPCTSTR) str);
CStringT::FormatMessage
Met en forme une chaîne de message.
void __cdecl FormatMessage(UINT nFormatID, [, argument]...);
void __cdecl FormatMessage(PCXSTR pszFormat, [, argument]...);
Paramètres
nFormatID
Identificateur de ressource de chaîne qui contient le texte du message non mis en forme.
pszFormat
Pointe vers la chaîne de contrôle de format. Il sera analysé pour les insertions et mis en forme en conséquence. La chaîne de format est similaire aux chaînes de format de style de fonction printf
d’exécution, sauf qu’elle permet d’insérer les paramètres dans un ordre arbitraire.
argument
Arguments facultatifs.
Notes
La fonction nécessite une définition de message en tant qu’entrée. La définition du message est déterminée par ou à pszFormat
partir de la ressource de chaîne identifiée par nFormatID
. La fonction copie le texte du message mis en forme dans l’objet CStringT
, en traitant les séquences d’insertion incorporées si demandées.
Remarque
FormatMessage
tente d’allouer la mémoire système pour la chaîne nouvellement mise en forme. Si cette tentative échoue, une exception de mémoire est levée automatiquement.
Chaque insertion doit avoir un paramètre correspondant suivant le ou nFormatID
le pszFormat
paramètre. Dans le texte du message, plusieurs séquences d’échappement sont prises en charge pour la mise en forme dynamique du message. Pour plus d’informations, consultez la fonction Windows FormatMessage
dans le Kit de développement logiciel (SDK) Windows.
Exemple
// typedef CStringT<TCHAR, StrTraitATL<TCHAR, ChTraitsCRT<TCHAR>>> CAtlString;
CAtlString str;
int nAsked = 5;
int nAgree = 4;
str.FormatMessage(_T("%1!d! of %2!d! writers agree: Soccer is %3%!"),
nAgree, nAsked, _T("Best"));
ASSERT(str == _T("4 of 5 writers agree: Soccer is Best!"));
CStringT::FormatMessageV
Met en forme une chaîne de message à l’aide d’une liste d’arguments de variable.
void FormatMessageV(PCXSTR pszFormat, va_list* pArgList);
Paramètres
pszFormat
Pointe vers la chaîne de contrôle de format. Il sera analysé pour les insertions et mis en forme en conséquence. La chaîne de format est similaire aux chaînes de format de style de fonction printf
d’exécution, sauf qu’elle permet d’insérer les paramètres dans un ordre arbitraire.
pArgList
Pointeur vers une liste d’arguments.
Notes
La fonction nécessite une définition de message comme entrée, déterminée par pszFormat
. La fonction copie le texte du message mis en forme et une liste variable d’arguments dans l’objet CStringT
, en traitant les séquences d’insertion incorporées si nécessaire.
Remarque
FormatMessageV
appelle CStringT::FormatMessage
, qui tente d’allouer la mémoire système pour la chaîne nouvellement mise en forme. Si cette tentative échoue, une exception de mémoire est levée automatiquement.
Pour plus d’informations, consultez la fonction Windows FormatMessage
dans le Kit de développement logiciel (SDK) Windows.
CStringT::FormatV
Met en forme une chaîne de message à l’aide d’une liste d’arguments de variable.
void FormatV(PCXSTR pszFormat, va_list args);
Paramètres
pszFormat
Pointe vers la chaîne de contrôle de format. Il sera analysé pour les insertions et mis en forme en conséquence. La chaîne de format est similaire aux chaînes de format de style de fonction printf
d’exécution, sauf qu’elle permet d’insérer les paramètres dans un ordre arbitraire.
args
Pointeur vers une liste d’arguments.
Notes
Écrit une chaîne mise en forme et une liste variable d’arguments dans une CStringT
chaîne de la même façon que celle qui vsprintf_s
met en forme les données dans un tableau de caractères de style C.
Exemple
void WriteString(LPCTSTR pstrFormat, ...)
{
CString str;
// format and write the data you were given
va_list args;
va_start(args, pstrFormat);
str.FormatV(pstrFormat, args);
va_end(args);
_tprintf_s(str);
return;
}
// Call the above WriteString function.
WriteString(_T("%d error(s) found in %d line(s)"), 10, 1351);
CStringT::GetEnvironmentVariable
Définit la chaîne sur la valeur de la variable d’environnement spécifiée.
BOOL GetEnvironmentVariable(PCXSTR pszVar);
Paramètres
pszVar
Pointeur vers une chaîne terminée par null qui spécifie la variable d’environnement.
Valeur de retour
Valeur différente de zéro cas de réussite ; sinon, 0.
Notes
Récupère la valeur de la variable spécifiée à partir du bloc d’environnement du processus appelant. La valeur se présente sous la forme d’une chaîne de caractères terminée par null.
Exemple
// typedef CStringT<TCHAR, StrTraitATL<TCHAR, ChTraitsCRT<TCHAR>>> CAtlString;
CAtlString EnvStr;
EnvStr.GetEnvironmentVariable(_T("TEMP"));
_tprintf_s(_T("Current value of TEMP variable: %s\n"), EnvStr);
CStringT::Insert
Insère un caractère unique ou une sous-chaîne à l’index donné dans la chaîne.
int Insert(int iIndex, PCXSTR psz);
int Insert(int iIndex, XCHAR ch);
Paramètres
iIndex
Index du caractère avant lequel l’insertion aura lieu.
psz
Pointeur vers la sous-chaîne à insérer.
ch
Caractère à insérer.
Valeur de retour
Longueur de la chaîne modifiée.
Notes
Le iIndex
paramètre identifie le premier caractère qui sera déplacé pour rendre la place du caractère ou de la sous-chaîne. Si nIndex
elle est égale à zéro, l’insertion se produit avant la chaîne entière. Si nIndex est supérieur à la longueur de la chaîne, la fonction concatène la chaîne actuelle et le nouveau matériau fourni par l’une ou l’autre ch
psz
.
Exemple
// typedef CStringT<TCHAR, StrTraitATL<TCHAR, ChTraitsCRT<TCHAR>>> CAtlString;
CAtlString str(_T("SoccerBest"));
int n = str.Insert(6, _T("is "));
ASSERT(n == str.GetLength());
_tprintf_s(_T("1: %s\n"), (LPCTSTR) str);
n = str.Insert(6, _T(' '));
ASSERT(n == str.GetLength());
_tprintf_s(_T("2: %s\n"), (LPCTSTR) str);
n = str.Insert(55, _T('!'));
ASSERT(n == str.GetLength());
_tprintf_s(_T("3: %s\n"), (LPCTSTR) str);
CStringT::Left
Extrait les caractères les plus nCount
à gauche de cet CStringT
objet et retourne une copie de la sous-chaîne extraite.
CStringT Left(int nCount) const;
Paramètres
nCount
Nombre de caractères à extraire de cet objet CStringT
.
Valeur de retour
Objet CStringT
qui contient une copie de la plage spécifiée des caractères. L'objet retourné par CStringT
peut être vide.
Notes
Si nCount
elle dépasse la longueur de la chaîne, la chaîne entière est extraite. Left
est similaire à la fonction de base Left
.
Pour les jeux de caractères multioctets (MBCS), nCount
traite chaque séquence 8 bits en tant que caractère, afin de renvoyer nCount
le nombre de caractères multioctets multiplié par deux.
Exemple
// typedef CStringT<TCHAR, StrTraitATL<TCHAR, ChTraitsCRT<TCHAR>>> CAtlString;
CAtlString s(_T("abcdef"));
ASSERT(s.Left(2) == _T("ab"));
CStringT::LoadString
Lit une ressource de chaîne Windows, identifiée par nID, dans un objet existant CStringT
.
BOOL LoadString(HINSTANCE hInstance, UINT nID, WORD wLanguageID);
BOOL LoadString(HINSTANCE hInstance, UINT nID);
BOOL LoadString(UINT nID);
Paramètres
hInstance
Handle de l’instance du module.
nID
ID de ressource de chaîne Windows.
wLanguageID
Langue de la ressource de chaîne.
Valeur de retour
Différent de zéro si la charge des ressources a réussi ; sinon 0.
Notes
Charge la ressource de chaîne (nID
) à partir du module spécifié (hInstance
) à l’aide de la langue spécifiée (wLanguage
).
Exemple
// typedef CStringT<TCHAR, StrTraitATL<TCHAR, ChTraitsCRT<TCHAR>>> CAtlString;
CAtlString s;
s.LoadString(IDS_APP_TITLE);
CStringT::MakeLower
Convertit l’objet CStringT
en chaîne minuscule.
CStringT& MakeLower();
Valeur de retour
Chaîne minuscule résultante.
Exemple
// typedef CStringT<TCHAR, StrTraitATL<TCHAR, ChTraitsCRT<TCHAR>>> CAtlString;
CAtlString s(_T("ABC"));
ASSERT(s.MakeLower() == _T("abc"));
CStringT::MakeReverse
Inverse l’ordre des caractères dans l’objet CStringT
.
CStringT& MakeReverse();
Valeur de retour
Chaîne inversée résultante.
Exemple
// typedef CStringT<TCHAR, StrTraitATL<TCHAR, ChTraitsCRT<TCHAR>>> CAtlString;
CAtlString s(_T("abc"));
ASSERT(s.MakeReverse() == _T("cba"));
CStringT::MakeUpper
Convertit l’objet CStringT
en chaîne majuscule.
CStringT& MakeUpper();
Valeur de retour
Chaîne majuscule résultante.
Notes
Exemple
// typedef CStringT<TCHAR, StrTraitATL<TCHAR, ChTraitsCRT<TCHAR>>> CAtlString;
CAtlString s(_T("abc"));
ASSERT(s.MakeUpper() == _T("ABC"));
CStringT::Mid
Extrait une sous-chaîne de caractères de longueur nCount
de cet CStringT
objet, en commençant à la position iFirst
(de base zéro).
CStringT Mid(int iFirst, int nCount) const;
CStringT Mid(int iFirst) const;
Paramètres
iFirst
Index de base zéro du premier caractère de cet CStringT
objet à inclure dans la sous-chaîne extraite.
nCount
Nombre de caractères à extraire de cet objet CStringT
. Si ce paramètre n’est pas fourni, le reste de la chaîne est extrait.
Valeur de retour
Objet CStringT
qui contient une copie de la plage spécifiée des caractères. L'objet retourné par CStringT
peut être vide.
Notes
La fonction retourne une copie de la sous-chaîne extraite. Mid
est similaire à la fonction De base Mid (sauf que les index de Basic sont basés sur un seul).
Pour les jeux de caractères multioctets (MBCS), nCount
fait référence à chaque caractère 8 bits ; autrement dit, un octet de début et de fin dans un caractère multioctet est compté comme deux caractères.
Exemple
// typedef CStringT<TCHAR, StrTraitATL<TCHAR, ChTraitsCRT<TCHAR>>> CAtlString;
CAtlString s(_T("abcdef"));
ASSERT(s.Mid(2, 3) == _T("cde"));
CStringT::OemToAnsi
Convertit tous les caractères de cet CStringT
objet du jeu de caractères OEM en jeu de caractères ANSI.
void OemToAnsi();
Notes
Cette fonction n’est pas disponible si _UNICODE
elle est définie.
Exemple
Consultez l’exemple pour CStringT::AnsiToOem
.
CStringT::operator =
Affecte une nouvelle valeur à la chaîne.
CStringT& operator=(const CStringT& strSrc);
template<bool bMFCDLL>
CStringT& operator=(const CSimpleStringT<BaseType, bMFCDLL>& str);
CStringT& operator=(PCXSTR pszSrc);
CStringT& operator=(PCYSTR pszSrc);
CStringT& operator=(const unsigned char* pszSrc);
CStringT& operator=(XCHAR ch);
CStringT& operator=(YCHAR ch);
CStringT& operator=(const VARIANT& var);
Paramètres
strSrc
A CStringT
à affecter à cette chaîne.
str
Référence à un objet CThisSimpleString
.
bMFCDLL
Valeur booléenne spécifiant si le projet est une DLL MFC ou non.
BaseType
Type de base de chaîne.
var
Objet variant à affecter à cette chaîne.
ch
Caractère ANSI ou Unicode à affecter à la chaîne.
pszSrc
Pointeur vers la chaîne d’origine affectée.
Notes
L’opérateur d’affectation accepte un autre CStringT
objet, un pointeur de caractère ou un seul caractère. Des exceptions de mémoire peuvent se produire chaque fois que vous utilisez cet opérateur, car le nouveau stockage peut être alloué.
Pour plus d’informations sur CThisSimpleString
, consultez la section Remarques de CStringT::CStringT
.
Remarque
Bien qu’il soit possible de créer CStringT
des instances qui contiennent des caractères null incorporés, nous vous recommandons de le faire. L’appel de méthodes et d’opérateurs sur CStringT
des objets qui contiennent des caractères null incorporés peut produire des résultats inattendus.
CStringT::operator +
Concatène deux chaînes ou un caractère et une chaîne.
friend CStringT operator+(const CStringT& str1, const CStringT& str2);
friend CStringT operator+(const CStringT& str1, PCXSTR psz2);
friend CStringT operator+(PCXSTR psz1, const CStringT& str2,);
friend CStringT operator+(char ch1, const CStringT& str2,);
friend CStringT operator+(const CStringT& str1, char ch2);
friend CStringT operator+(const CStringT& str1, wchar_t ch2);
friend CStringT operator+(wchar_t ch1, const CStringT& str2,);
Paramètres
ch1
Caractère ANSI ou Unicode à concaténer avec une chaîne.
ch2
Caractère ANSI ou Unicode à concaténer avec une chaîne.
str1
À CStringT
concaténer avec une chaîne ou un caractère.
str2
À CStringT
concaténer avec une chaîne ou un caractère.
psz1
Pointeur vers une chaîne terminée par null pour concaténer avec une chaîne ou un caractère.
psz2
Pointeur vers une chaîne à concaténer avec une chaîne ou un caractère.
Notes
Il existe sept formes de surcharge de la CStringT::operator+
fonction. La première version concatène deux objets existants CStringT
. Les deux suivantes concatènent un CStringT
objet et une chaîne terminée par null. Les deux suivantes concatènent un CStringT
objet et un caractère ANSI. Les deux derniers concatènent un CStringT
objet et un caractère Unicode.
Remarque
Bien qu’il soit possible de créer CStringT
des instances qui contiennent des caractères null incorporés, nous vous recommandons de le faire. L’appel de méthodes et d’opérateurs sur CStringT
des objets qui contiennent des caractères null incorporés peut produire des résultats inattendus.
Exemple
// typedef CStringT<TCHAR, StrTraitATL<TCHAR, ChTraitsCRT<TCHAR>>> CAtlString;
CAtlString s1(_T("dog ")), s2(_T(" awake")), s3; // Empty CAtlString objects
s1= _T("The ") + s1;
s3= s1 + _T('i');
s3= s3 + _T('s');
s3= s3 + s2;
ASSERT(s3 == _T("The dog is awake"));
CStringT::operator +=
Concatène les caractères à la fin de la chaîne.
CStringT& operator+=(const CThisSimpleString& str);
template<bool bMFCDLL>
CStringT& operator+=(const const CSimpleStringT<BaseType, bMFCDLL>& str);
template<int t_nSize>
CStringT& operator+=(const CStaticString<XCHAR, t_nSize>& strSrc);
CStringT& operator+=(PCXSTR pszSrc);
CStringT& operator+=(PCYSTR pszSrc);
CStringT& operator+=(char ch);
CStringT& operator+=(unsigned char ch);
CStringT& operator+=(wchar_t ch);
CStringT& operator+=(const VARIANT& var);
Paramètres
str
Référence à un objet CThisSimpleString
.
bMFCDLL
Valeur booléenne spécifiant si le projet est une DLL MFC ou non.
BaseType
Type de base de chaîne.
var
Objet variant à concaténer à cette chaîne.
ch
Caractère ANSI ou Unicode à concaténer avec une chaîne.
pszSrc
Pointeur vers la chaîne d’origine concaténée.
strSrc
À CStringT
concaténer à cette chaîne.
Notes
L’opérateur accepte un autre CStringT
objet, un pointeur de caractère ou un seul caractère. Les exceptions de mémoire peuvent se produire chaque fois que vous utilisez cet opérateur de concaténation, car le nouveau stockage peut être alloué pour les caractères ajoutés à cet CStringT
objet.
Pour plus d’informations sur CThisSimpleString
, consultez la section Remarques de CStringT::CStringT
.
Remarque
Bien qu’il soit possible de créer CStringT
des instances qui contiennent des caractères null incorporés, nous vous recommandons de le faire. L’appel de méthodes et d’opérateurs sur CStringT
des objets qui contiennent des caractères null incorporés peut produire des résultats inattendus.
Exemple
// typedef CStringT<TCHAR, StrTraitATL<TCHAR, ChTraitsCRT<TCHAR>>> CAtlString;
CAtlString s(_T("abc"));
ASSERT((s += _T("def")) == _T("abcdef"));
CStringT::operator ==
Détermine si deux chaînes sont logiquement égales.
friend bool operator==(const CStringT& str1, const CStringT& str2) throw();
friend bool operator==(const CStringT& str1, PCXSTR psz2) throw();
friend bool operator==(const CStringT& str1, PCYSTR psz2) throw();
friend bool operator==(const CStringT& str1, XCHAR ch2) throw();
friend bool operator==(PCXSTR psz1, const CStringT& str2) throw();
friend bool operator==(PCYSTR psz1, const CStringT& str2,) throw();
friend bool operator==(XCHAR ch1, const CStringT& str2,) throw();
Paramètres
ch1
Caractère ANSI ou Unicode pour la comparaison.
ch2
Caractère ANSI ou Unicode pour la comparaison.
str1
À CStringT
des fins de comparaison.
str2
À CStringT
des fins de comparaison.
psz1
Pointeur vers une chaîne terminée par null pour la comparaison.
psz2
Pointeur vers une chaîne terminée par null pour la comparaison.
Notes
Teste si une chaîne ou un caractère sur le côté gauche est égal à une chaîne ou un caractère sur le côté droit, et retourne ou FALSE
en TRUE
conséquence.
Exemple
// typedef CStringT< TCHAR, StrTraitATL< TCHAR > > CAtlString;
CAtlString s1(_T("dog")), s2(_T("f")), s3(_T("dog"));
ASSERT(s1 == _T("dog"));
ASSERT(s2 == _T('f'));
ASSERT(s1 == s3);
CStringT::operator !=
Détermine si deux chaînes ne sont pas égales logiquement.
friend bool operator!=(const CStringT& str1, const CStringT& str2) throw();
friend bool operator!=(const CStringT& str1, PCXSTR psz2) throw();
friend bool operator!=(const CStringT& str1, PCYSTR psz2) throw();
friend bool operator!=(const CStringT& str1, XCHAR ch2) throw();
friend bool operator!=(PCXSTR psz1, const CStringT& str2) throw();
friend bool operator!=(PCYSTR psz1, const CStringT& str2,) throw();
friend bool operator!=(XCHAR ch1, const CStringT& str2,) throw();
Paramètres
ch1
Caractère ANSI ou Unicode à concaténer avec une chaîne.
ch2
Caractère ANSI ou Unicode à concaténer avec une chaîne.
str1
À CStringT
des fins de comparaison.
str2
À CStringT
des fins de comparaison.
psz1
Pointeur vers une chaîne terminée par null pour la comparaison.
psz2
Pointeur vers une chaîne terminée par null pour la comparaison.
Notes
Teste si une chaîne ou un caractère situé à gauche n’est pas égal à une chaîne ou un caractère situé à droite.
Exemple
// typedef CStringT<TCHAR, StrTraitATL<TCHAR, ChTraitsCRT<TCHAR>>> CAtlString;
CAtlString s1(_T("cat")), s2(_T("f")), s3(_T("horse"));
ASSERT(s1 != _T("dog"));
ASSERT(s2 != _T('t'));
ASSERT(s1 != s2);
CStringT::operator <
Détermine si la chaîne située à gauche de l’opérateur est inférieure à la chaîne située à droite.
friend bool operator<(const CStringT& str1, const CStringT& str2) throw();
friend bool operator<(const CStringT& str1, PCXSTR psz2) throw();
friend bool operator<(PCXSTR psz1, const CStringT& str2) throw();
Paramètres
str1
À CStringT
des fins de comparaison.
str2
À CStringT
des fins de comparaison.
psz1
Pointeur vers une chaîne terminée par null pour la comparaison.
psz2
Pointeur vers une chaîne terminée par null pour la comparaison.
Notes
Comparaison lexicographique entre les chaînes, caractère par caractère jusqu’à :
Elle trouve deux caractères correspondants inégaux et le résultat de leur comparaison est considéré comme étant le résultat de la comparaison entre les chaînes.
Elle ne trouve aucune inégalité, mais une chaîne a plus de caractères que l’autre, et la chaîne la plus courte est considérée comme inférieure à la chaîne la plus longue.
Elle ne trouve aucune inégalité et les chaînes ont le même nombre de caractères, si bien que les chaînes sont égales.
Exemple
// typedef CStringT<TCHAR, StrTraitATL<TCHAR, ChTraitsCRT<TCHAR>>> CAtlString;
CAtlString s1(_T("cat")), s2(_T("cats")), s3(_T("dogs"));
ASSERT(s1 < _T("dog"));
ASSERT(s1 < _T("cats"));
ASSERT(s2 < _T("cats and dogs"));
ASSERT(s2 < s3);
CStringT::operator >
Détermine si la chaîne située à gauche de l’opérateur est supérieure à la chaîne située à droite.
friend bool operator>(const CStringT& str1, const CStringT& str2) throw();
friend bool operator>(const CStringT& str1, PCXSTR psz2) throw();
friend bool operator>(PCXSTR psz1, const CStringT& str2) throw();
Paramètres
str1
À CStringT
des fins de comparaison.
str2
À CStringT
des fins de comparaison.
psz1
Pointeur vers une chaîne terminée par null pour la comparaison.
psz2
Pointeur vers une chaîne terminée par null pour la comparaison.
Notes
Comparaison lexicographique entre les chaînes, caractère par caractère jusqu’à :
Elle trouve deux caractères correspondants inégaux et le résultat de leur comparaison est considéré comme étant le résultat de la comparaison entre les chaînes.
Elle ne trouve aucune inégalité, mais une chaîne a plus de caractères que l’autre, et la chaîne la plus courte est considérée comme inférieure à la chaîne la plus longue.
Elle ne trouve aucune inégalité et les chaînes ont le même nombre de caractères, si bien que les chaînes sont égales.
Exemple
// typedef CStringT<TCHAR, StrTraitATL<TCHAR, ChTraitsCRT<TCHAR>>> CAtlString;
CAtlString s1(_T("cat")), s2(_T("cats")), s3(_T("dogs"));
ASSERT(_T("dog") > s1);
ASSERT(_T("cats") > s1);
ASSERT(_T("cats and dogs") > s2);
ASSERT(s3 > s2);
CStringT::operator <=
Détermine si la chaîne située à gauche de l’opérateur est inférieure ou égale à la chaîne située à droite.
friend bool operator<=(const CStringT& str1, const CStringT& str2) throw();
friend bool operator<=(const CStringT& str1, PCXSTR psz2) throw();
friend bool operator<=(PCXSTR psz1, const CStringT& str2) throw();
Paramètres
str1
À CStringT
des fins de comparaison.
str2
À CStringT
des fins de comparaison.
psz1
Pointeur vers une chaîne terminée par null pour la comparaison.
psz2
Pointeur vers une chaîne terminée par null pour la comparaison.
Notes
Comparaison lexicographique entre les chaînes, caractère par caractère jusqu’à :
Elle trouve deux caractères correspondants inégaux et le résultat de leur comparaison est considéré comme étant le résultat de la comparaison entre les chaînes.
Elle ne trouve aucune inégalité, mais une chaîne a plus de caractères que l’autre, et la chaîne la plus courte est considérée comme inférieure à la chaîne la plus longue.
Elle ne trouve aucune inégalité et les chaînes ont le même nombre de caractères, si bien que les chaînes sont égales.
Exemple
// typedef CStringT<TCHAR, StrTraitATL<TCHAR, ChTraitsCRT<TCHAR>>> CAtlString;
CAtlString s1(_T("cat")), s2(_T("cats")), s3(_T("dogs"));
ASSERT(s1 <= _T("dog"));
ASSERT(s1 <= _T("cat"));
ASSERT(s3 <= _T("dogs and cats"));
ASSERT(s2 <= s3);
CStringT::operator >=
Détermine si la chaîne située à gauche de l’opérateur est supérieure ou égale à la chaîne située à droite.
friend bool operator>=(const CStringT& str1, const CStringT& str2) throw();
friend bool operator>=(const CStringT& str1, PCXSTR psz2) throw();
friend bool operator>=(PCXSTR psz1, const CStringT& str2) throw();
Paramètres
str1
À CStringT
des fins de comparaison.
str2
À CStringT
des fins de comparaison.
psz1
Pointeur vers une chaîne pour la comparaison.
psz2
Pointeur vers une chaîne pour la comparaison.
Notes
Comparaison lexicographique entre les chaînes, caractère par caractère jusqu’à :
Elle trouve deux caractères correspondants inégaux et le résultat de leur comparaison est considéré comme étant le résultat de la comparaison entre les chaînes.
Elle ne trouve aucune inégalité, mais une chaîne a plus de caractères que l’autre, et la chaîne la plus courte est considérée comme inférieure à la chaîne la plus longue.
Elle ne trouve aucune inégalité et les chaînes ont le même nombre de caractères, si bien que les chaînes sont égales.
Exemple
// typedef CStringT<TCHAR, StrTraitATL<TCHAR, ChTraitsCRT<TCHAR>>> CAtlString;
CAtlString s1(_T("cat")), s2(_T("cats")), s3(_T("dogs"));
ASSERT(_T("dog") >= s1);
ASSERT(_T("cats and dogs") >= s2);
ASSERT(s3 >= s2);
CStringT::Remove
Supprime toutes les instances du caractère spécifié de la chaîne.
int Remove(XCHAR chRemove);
Paramètres
chRemove
Caractère à supprimer d’une chaîne.
Valeur de retour
Nombre de caractères supprimés de la chaîne. Zéro si la chaîne n’est pas modifiée.
Notes
Les comparaisons pour le caractère respectent la casse.
Exemple
// typedef CStringT<TCHAR, StrTraitATL<TCHAR, ChTraitsCRT<TCHAR>>> CAtlString;
CAtlString str(_T("This is a test."));
int n = str.Remove(_T('t'));
ASSERT(n == 2);
ASSERT(str == _T("This is a es."));
CStringT::Replace
Il existe deux versions de Replace
. La première version remplace une ou plusieurs copies d’une sous-chaîne à l’aide d’une autre sous-chaîne. Les deux sous-chaînes sont terminées par null. La deuxième version remplace une ou plusieurs copies d’un caractère à l’aide d’un autre caractère. Les deux versions fonctionnent sur les données de caractères stockées dans CStringT
.
int Replace(PCXSTR pszOld, PCXSTR pszNew);
int Replace(XCHAR chOld, XCHAR chNew);
Paramètres
pszOld
Pointeur vers une chaîne terminée par null à remplacer par pszNew
.
pszNew
Pointeur vers une chaîne terminée par null qui remplace pszOld
.
chOld
Caractère à remplacer par chNew
.
chNew
Caractère remplaçant chOld
.
Valeur de retour
Retourne le nombre d’instances remplacées du caractère ou de la sous-chaîne, ou zéro si la chaîne n’est pas modifiée.
Notes
Replace
peut modifier la longueur de la chaîne, car pszNew
et pszOld
n’ont pas besoin d’être de la même longueur, et plusieurs copies de l’ancienne sous-chaîne peuvent être remplacées par la nouvelle. La fonction effectue une correspondance sensible à la casse.
Exemples d’instances CStringT
: CString
, CStringA
et CStringW
.
Pour CStringA
, Replace
fonctionne avec des caractères ANSI ou multioctets (MBCS). Pour CStringW
, Replace
fonctionne avec des caractères larges.
Pour CString
, le type de données caractère est sélectionné au moment de la compilation, selon que les constantes du tableau suivant sont définies.
Constante définie | Type de données caractère |
---|---|
_UNICODE |
Caractères larges |
_MBCS |
Caractères multioctets |
Aucun | Caractères d’un octet |
Les deux | Undefined |
Exemple
// typedef CStringT<TCHAR, StrTraitATL<TCHAR, ChTraitsCRT<TCHAR>>> CAtlString;
CAtlString strBang(_T("Everybody likes epee fencing"));
int n = strBang.Replace(_T("epee"), _T("foil"));
ASSERT(n == 1);
CStringT::ReverseFind
Recherche cet CStringT
objet pour la dernière correspondance d’un caractère.
int ReverseFind(XCHAR ch) const throw();
Paramètres
ch
Caractère à rechercher.
Valeur de retour
Index de base zéro du dernier caractère de cet CStringT
objet qui correspond au caractère demandé, ou -1 si le caractère est introuvable.
Notes
La fonction est similaire à la fonction strrchr
d’exécution .
Exemple
// typedef CStringT<TCHAR, StrTraitATL<TCHAR, ChTraitsCRT<TCHAR>>> CAtlString;
CAtlString s(_T("abcabc"));
ASSERT(s.ReverseFind(_T('b')) == 4);
CStringT::Right
Extrait les derniers caractères (c’est-à-dire les plus à droite) nCount
de cet CStringT
objet et retourne une copie de la sous-chaîne extraite.
CStringT Right(int nCount) const;
Paramètres
nCount
Nombre de caractères à extraire de cet objet CStringT
.
Valeur de retour
Objet CStringT
qui contient une copie de la plage spécifiée des caractères. L’objet retourné CStringT
peut être vide.
Notes
Si nCount
elle dépasse la longueur de la chaîne, la chaîne entière est extraite. Right
est similaire à la fonction De base Right
(sauf que les index de Base sont de base zéro).
Pour les jeux de caractères multioctets (MBCS
), nCount
fait référence à chaque caractère 8 bits ; autrement dit, un octet de prospect et de fin dans un caractère multioctet est compté comme deux caractères.
Exemple
// typedef CStringT<TCHAR, StrTraitATL<TCHAR, ChTraitsCRT<TCHAR>>> CAtlString;
CAtlString s(_T("abcdef"));
ASSERT(s.Right(2) == _T("ef"));
CStringT::SetSysString
Réalloue le BSTR
pointé vers pbstr
et copie le contenu de l’objet CStringT
dans celui-ci, y compris le NULL
caractère.
BSTR SetSysString(BSTR* pbstr) const;
Paramètres
pbstr
Pointeur vers une chaîne de caractères.
Valeur de retour
La nouvelle chaîne.
Notes
Selon le contenu de l’objet CStringT
, la valeur de l’objet BSTR
référencée pbstr
peut changer. La fonction lève une CMemoryException
mémoire si insuffisante existe.
Cette fonction est normalement utilisée pour modifier la valeur des chaînes passées par référence pour Automation.
Exemple
BSTR bstr = ::SysAllocString(L"Golf is fun!");
// create a CAtlString and change the OLE
// string to the contents of the BSTR
// typedef CStringT<TCHAR, StrTraitATL<TCHAR, ChTraitsCRT<TCHAR>>> CAtlString;
CAtlString str(_T("Soccer is best!"));
BSTR bstr2 = str.SetSysString(&bstr);
// Now, both bstr and bstr2 reference a single instance of
// the "Soccer" string. The "Golf" string has been freed.
ASSERT(bstr2 == bstr);
CStringT::SpanExcluding
Extrait les caractères de la chaîne, en commençant par le premier caractère, qui ne figurent pas dans l’ensemble de caractères identifiés par pszCharSet
.
CStringT SpanExcluding(PCXSTR pszCharSet) const;
Paramètres
pszCharSet
Chaîne interprétée comme un ensemble de caractères.
Valeur de retour
Sous-chaîne qui contient des caractères dans la chaîne qui ne se trouvent pas pszCharSet
, commençant par le premier caractère de la chaîne et se terminant par le premier caractère trouvé dans la chaîne qui se trouve également pszCharSet
(autrement dit, en commençant par le premier caractère de la chaîne et jusqu’à l’exclusion du premier caractère de la chaîne trouvée pszCharSet
). Elle retourne la chaîne entière si aucun caractère pszCharSet
n’est trouvé dans la chaîne.
Notes
SpanExcluding
extrait et retourne tous les caractères qui précèdent la première occurrence d’un caractère pszCharSet
(en d’autres termes, le caractère de pszCharSet
et tous les caractères suivants dans la chaîne, ne sont pas retournés). Si aucun caractère n’est pszCharSet
trouvé dans la chaîne, SpanExcluding
retourne la chaîne entière.
Exemple
// The string can be delimited by a semicolon(;),
// a comma(,), a period(.), a dash(-),
// or an apostrophe(').
// typedef CStringT<TCHAR, StrTraitATL<TCHAR, ChTraitsCRT<TCHAR>>> CAtlString;
CAtlString src(_T("abcdef"));
_tprintf_s(_T("%s"),src.SpanExcluding(_T(";,.-'")));
CStringT::SpanIncluding
Extrait les caractères de la chaîne, en commençant par le premier caractère, qui se trouvent dans l’ensemble de caractères identifiés par pszCharSet
.
CStringT SpanIncluding(PCXSTR pszCharSet) const;
Paramètres
pszCharSet
Chaîne interprétée comme un ensemble de caractères.
Valeur de retour
Sous-chaîne qui contient des caractères dans la chaîne qui se trouvent pszCharSet
, en commençant par le premier caractère de la chaîne et se terminant lorsqu’un caractère est trouvé dans la chaîne qui n’est pas dans pszCharSet
. SpanIncluding
retourne une sous-chaîne vide si le premier caractère de la chaîne n’est pas dans le jeu spécifié.
Notes
Si le premier caractère de la chaîne n’est pas dans le jeu de caractères, SpanIncluding
retourne une chaîne vide. Sinon, elle retourne une séquence de caractères consécutifs qui se trouvent dans le jeu.
Exemple
// typedef CStringT<TCHAR, StrTraitATL<TCHAR, ChTraitsCRT<TCHAR>>> CAtlString;
CAtlString str(_T("cabbage"));
CAtlString res = str.SpanIncluding(_T("abc"));
ASSERT(res == _T("cabba"));
res = str.SpanIncluding(_T("xyz"));
ASSERT(res.IsEmpty());
CStringT::Tokenize
Recherche le jeton suivant dans une chaîne cible
CStringT Tokenize(PCXSTR pszTokens, int& iStart) const;
Paramètres
pszTokens
Chaîne contenant des délimiteurs de jetons. L’ordre de ces délimiteurs n’est pas important.
iStart
Index de base zéro pour commencer la recherche.
Valeur de retour
Objet CStringT
contenant la valeur du jeton actuel.
Notes
La Tokenize
fonction recherche le jeton suivant dans la chaîne cible. Le jeu de caractères dans pszTokens
spécifie les délimiteurs possibles du jeton à trouver. Sur chaque appel à la fonction commence à Tokenize
iStart
, ignore les délimiteurs principaux et retourne un CStringT
objet contenant le jeton actuel, qui est la chaîne de caractères jusqu’au caractère délimiteur suivant. La valeur de iStart
cette propriété est mise à jour pour être la position suivant le caractère délimiteur de fin, ou -1 si la fin de la chaîne a été atteinte. D’autres jetons peuvent être décomposés du reste de la chaîne cible par une série d’appels à Tokenize
, en utilisant iStart
pour effectuer le suivi de l’emplacement où dans la chaîne, le jeton suivant doit être lu. Lorsqu’il n’y a plus de jetons, la fonction retourne une chaîne vide et iStart
est définie sur -1.
Contrairement aux fonctions de tokenize CRT telles que strtok_s
, _wcstok_s_l
wcstok_s
_strtok_s_l
_mbstok_s
, , ne Tokenize
_mbstok_s_l
modifie pas la chaîne cible.
Exemple
// typedef CStringT<TCHAR, StrTraitATL<TCHAR, ChTraitsCRT<TCHAR>>> CAtlString;
CAtlString str(_T("%First Second#Third"));
CAtlString resToken;
int curPos = 0;
resToken= str.Tokenize(_T("% #"),curPos);
while (resToken != _T(""))
{
_tprintf_s(_T("Resulting token: %s\n"), resToken);
resToken = str.Tokenize(_T("% #"), curPos);
};
La sortie de cet exemple est la suivante :
Resulting Token: First
Resulting Token: Second
Resulting Token: Third
CStringT::Trim
Supprime les caractères de début et de fin de la chaîne.
CStringT& Trim(XCHAR chTarget);
CStringT& Trim(PCXSTR pszTargets);
CStringT& Trim();
Paramètres
chTarget
Caractère cible à découper.
pszTargets
Pointeur vers une chaîne contenant les caractères cibles à découper. Toutes les occurrences de début et de fin des caractères dans pszTargets
devront être supprimées de l’objet CStringT
.
Valeur de retour
Retourne la chaîne rogné.
Notes
Supprime toutes les occurrences de début et de fin de l’une des opérations suivantes :
Caractère spécifié par
chTarget
.Tous les caractères trouvés dans la chaîne spécifiée par
pszTargets
.Espaces.
Exemple
// typedef CStringT<TCHAR, StrTraitATL<TCHAR, ChTraitsCRT<TCHAR>>> CAtlString;
CAtlString str;
str = _T("******Soccer is best!?!?!?!?!");
_tprintf_s(_T("Before: \"%s\"\n"), (LPCTSTR)str);
_tprintf_s(_T("After : \"%s\"\n"), (LPCTSTR)str.Trim(_T("?!*")));
// Output:
// --------------------------
// Before: ******Soccer is best!?!?!?!?!
// After: Soccer is best
La sortie de cet exemple est la suivante :
Before: "******Soccer is best, but liquor is quicker!!!!!"
After : "Soccer is best, but liquor is quicker"
CStringT::TrimLeft
Supprime les caractères de début de la chaîne.
CStringT& TrimLeft(XCHAR chTarget);
CStringT& TrimLeft(PCXSTR pszTargets);
CStringT& TrimLeft();
Paramètres
chTarget
Caractère cible à découper.
pszTargets
Pointeur vers une chaîne contenant les caractères cibles à découper. Toutes les occurrences principales de caractères sont pszTargets
supprimées de l’objet CStringT
.
Valeur de retour
Chaîne tronquée résultante.
Notes
Supprime toutes les occurrences de début et de fin de l’une des opérations suivantes :
Caractère spécifié par
chTarget
.Tous les caractères trouvés dans la chaîne spécifiée par
pszTargets
.Espaces.
Exemple
// typedef CStringT<TCHAR, StrTraitATL<TCHAR, ChTraitsCRT<TCHAR>>> CAtlString;
CAtlString str;
str = _T("\t\t ****Soccer is best!");
_tprintf_s(_T("Before: \"%s\"\n"), (LPCTSTR)str);
_tprintf_s(_T("After: \"%s\"\n"), (LPCTSTR)str.TrimLeft(_T("\t *")));
// Output:
// --------------------------
// Before: ****Soccer is best!
// After: Soccer is best!
CStringT::TrimRight
Supprime les caractères de fin de la chaîne.
CStringT& TrimRight(XCHAR chTarget);
CStringT& TrimRight(PCXSTR pszTargets);
CStringT& TrimRight();
Paramètres
chTarget
Caractère cible à découper.
pszTargets
Pointeur vers une chaîne contenant les caractères cibles à découper. Toutes les occurrences de fin de caractères sont pszTargets
supprimées de l’objet CStringT
.
Valeur de retour
Retourne l’objet CStringT
qui contient la chaîne rogné.
Notes
Supprime les occurrences de fin de l’une des opérations suivantes :
Caractère spécifié par
chTarget
.Tous les caractères trouvés dans la chaîne spécifiée par
pszTargets
.Espaces.
La CStringT& TrimRight(XCHAR chTarget)
version accepte un paramètre de caractère et supprime toutes les copies de ce caractère de la fin des données de CStringT
chaîne. Elle commence à partir de la fin de la chaîne et fonctionne vers l’avant. Il s’arrête lorsqu’il trouve un caractère différent ou lorsqu’il CStringT
manque des données de caractères.
La CStringT& TrimRight(PCXSTR pszTargets)
version accepte une chaîne terminée par null qui contient tous les caractères différents à rechercher. Elle supprime toutes les copies de ces caractères dans l’objet CStringT
. Elle commence à la fin de la chaîne et fonctionne vers l’avant. Il s’arrête lorsqu’il trouve un caractère qui n’est pas dans la chaîne cible ou lorsqu’il CStringT
manque des données de caractères. Il n’essaie pas de faire correspondre la chaîne cible entière à une sous-chaîne à la fin de CStringT
.
La CStringT& TrimRight()
version ne nécessite aucun paramètre. Il supprime les espaces blancs de fin de la fin de la CStringT
chaîne. Les espaces blancs peuvent être des sauts de ligne, des espaces ou des onglets.
Exemple
// typedef CStringT<TCHAR, StrTraitATL<TCHAR, ChTraitsCRT<TCHAR>>> CAtlString;
CAtlString str;
str = _T("Soccer is best!?!?!?!?!");
_tprintf_s(_T("Before: \"%s\"\n"), (LPCTSTR)str);
_tprintf_s(_T("After : \"%s\"\n"), (LPCTSTR)str.TrimRight(_T("?!")));
// Output:
// --------------------------
// Before: Soccer is best!?!?!?!?!
// After: Soccer is best
Voir aussi
Graphique hiérarchique
Classes partagées ATL/MFC
CSimpleStringT
Classe