Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Un objet de CString contient des données de chaîne.CString hérite de l'ensemble de méthodes et opérateurs définis dans le modèle de classe CStringT pour utiliser des données de chaîne.(CString est typedef qui spécialise CStringT pour utiliser le type de données caractères qu' CString prend en charge.)
CString ne stocke pas les données caractères en interne en tant que chaîne terminée par le caractère NULL de style c.À la place, CString suit la longueur des données caractères afin qu'il puisse plus sécurisé examiner les données et l'espace qu'elle requiert.
CString accepte les chaînes de style C, et fournit des méthodes pour accéder aux données caractères comme une chaîne de style c.Cette rubrique contient les sections suivantes expliquent comment utiliser un objet d' CString comme s'il était chaîne terminée par le caractère NULL de style c.
Convertir des chaînes terminée par le caractère NULL de style C
Utilisation des fonctions standard de chaîne de la bibliothèque Runtime
Modification du contenu de CString directement
À l'aide de objets de CString avec les fonctions d'arguments variables
Spécification de paramètres formels de CString
À l'aide de CString comme une chaîne terminée par le caractère NULL de style c
Pour utiliser un objet d' CString comme une chaîne de style c, effectuez un cast de l'objet à LPCTSTR.Dans l'exemple suivant, CString retourne un pointeur vers une chaîne terminée par le caractère NULL de style C en lecture seule.La fonction d' strcpy place une copie de la chaîne de style C dans myStringvariable.
CString aCString = "A string";
char myString[256];
strcpy(myString, (LPCTSTR)aString);
Vous pouvez utiliser des méthodes d' CString , par exemple, SetAt, pour modifier les différents caractères dans l'objet chaîne.Toutefois, le pointeur d' LPCTSTR est temporaire et devient non valide lorsqu'une modification est apportée à CString.CString peut aussi sortir de la portée et être automatiquement supprimé.Nous vous recommandons d'obtenir un pointeur d' LPCTSTR d'un objet d' CString chaque fois que vous utilisez un.
Quelquefois vous pouvez avoir besoin d'une copie des données d' CString pour modifier directement.Utilisez la fonction plus sécurisée strcpy_s (ou l'Unicode/MBCS-portable _tcscpy_s) pour copier l'objet d' CString dans une mémoire tampon distincte.C'est l'emplacement où les caractères peuvent être modifiés sans risque, comme illustré par l'exemple suivant.
CString theString(_T("This is a test"));
int sizeOfString = (theString.GetLength() + 1);
LPTSTR lpsz = new TCHAR[sizeOfString];
_tcscpy_s(lpsz, sizeOfString, theString);
//... modify lpsz as much as you want
[!REMARQUE]
Le troisième argument à strcpy_s (ou l'Unicode/MBCS-portable _tcscpy_s) est constwchar_t* (Unicode) ou constchar* (ANSI).Les séries ci-dessus d'exemple CString pour cet argument.Le compilateur C++ applique automatiquement la fonction de conversion définie pour la classe d' CString qui convertit CString à LPCTSTR.La possibilité de définir des opérations de conversion d'un type en un autre est l'une des fonctionnalités utiles de C++.
Utilisation des fonctions standard de chaîne de la bibliothèque Runtime
Vous devez trouver une méthode d' CString pour exécuter une opération de chaîne pour laquelle vous pouvez envisager d'utiliser les fonctions standard de chaîne de la bibliothèque Runtime C telles que strcmp (ou l'Unicode/MBCS-portable _tcscmp).
Si vous devez utiliser les fonctions de chaîne du runtime C, vous pouvez utiliser les techniques décrites dans Convertir des chaînes terminée par le caractère NULL de style C_core_using_cstring_as_a_c.2d.style_null.2d.terminated_string.Vous pouvez copier l'objet d' CString à une mémoire tampon équivalente de chaîne de style C, exécutez les opérations dans la mémoire tampon, puis assignez une chaîne de style C en résulte en un objet d' CString .
Modification du contenu de CString directement
Dans la plupart des cas, vous devez utiliser des fonctions membres d' CString pour modifier le contenu d'un objet d' CString ou pour convertir CString à la chaîne de style c.
Il existe des situations où il est logique de modifier directement le contenu d' CString , par exemple, lorsque vous utilisez des fonctions du système d'exploitation qui requièrent une mémoire tampon de caractères.
L'accès offrent de méthodes d' GetBuffer et d' ReleaseBuffer en mémoire tampon de caractères interne d' CString vous objet et permettent de le modifier directement.Les étapes suivantes indiquent comment utiliser ces fonctions à cet effet.
Pour utiliser GetBuffer et ReleaseBuffer pour accéder à la mémoire tampon de caractères interne d'un objet CString
Appelez GetBuffer pour un objet d' CString et spécifiez la longueur de la mémoire tampon dont vous avez besoin.
Utilisez le pointeur retourné par GetBuffer écrire des caractères directement dans l'objet de CString .
Appelez ReleaseBuffer pour l'objet d' CString pour mettre à jour toutes les informations d'état interne d' CString , par exemple, la longueur de la chaîne.Après avoir modifié le contenu d' CString objets directement, vous devez appeler ReleaseBuffer avant d'appeler les autres fonctions membres d' CString .
À l'aide de objets de CString avec les fonctions d'arguments variables
Certaines fonctions C utilisent un nombre variable d'arguments.Un exemple notable est printf_s.En raison de la méthode ce type de fonction est déclaré, le compilateur ne peut pas être sûr du type des arguments et ne peut pas déterminer quelle opération de conversion à exécuter sur chaque argument.Par conséquent, il est essentiel que vous avez utilisé un cast de type explicite en passant un objet d' CString à une fonction qui accepte un nombre variable d'arguments.
Pour utiliser un objet d' CString dans une fonction d'argument variable, effectuez un cast explicite CString à une chaîne d' LPCTSTR , comme indiqué dans l'exemple suivant.
CString kindOfFruit = _T("bananas");
int howmany = 25;
_tprintf_s(_T("You have %d %s\n"), howmany, (LPCTSTR)kindOfFruit);
Spécification de paramètres formels de CString
Pour la plupart des fonctions qui ont besoin d'un argument de chaîne, il est conseillé de spécifier le paramètre formel dans le prototype de fonction en tant que pointeur d' const à un caractère (LPCTSTR) au lieu d' CString.Lorsqu'un paramètre est spécifié en tant que pointeur d' const à un caractère, vous pouvez passer un pointeur vers un tableau d' TCHAR , une chaîne littéral []"hi there", ou à un objet d' CString .L'objet d' CString sera converti automatiquement à LPCTSTR.Tout emplacement que vous pouvez utiliser LPCTSTR, vous pouvez également utiliser un objet d' CString .
Vous pouvez également spécifier un paramètre comme une référence à une constante de chaîne (autrement dit, constCString&) si l'argument n'est pas modifié.Supprimez le modificateur d' const si la chaîne sera modifiée par la fonction.Si une valeur NULL par défaut est souhaitée, initialisez -la à la chaîne Null""[], comme indiqué ci-dessous :
void AddCustomer(const CString& name, const CString& address,
const CString& comment = _T(""));
Pour la plupart des résultats de fonction, vous pouvez simplement retourner un objet d' CString par valeur.