Partager via


CString Passage d’arguments

Cet article explique comment passer des objets à des CString fonctions et comment retourner CString des objets à partir de fonctions.

CString Conventions de passage d’arguments

Lorsque vous définissez une interface de classe, vous devez déterminer la convention de passage d’argument pour vos fonctions membres. Il existe certaines règles standard pour passer et retourner CString des objets. Si vous suivez les règles décrites dans Chaînes en tant qu’entrées de fonction et chaînes en tant que sorties de fonction, vous disposez d’un code efficace et correct.

Chaînes en tant qu’entrées de fonction

Le moyen le plus efficace et le plus sécurisé d’utiliser un CString objet dans les fonctions appelées consiste à passer un CString objet à la fonction. Malgré le nom, un objet ne stocke pas de CString chaîne en interne en tant que chaîne de style C qui a un NULL terminateur. Au lieu de cela, un CString objet effectue un suivi prudent du nombre de caractères qu’il contient. Avoir CString fourni un LPCTSTR pointeur vers une NULLchaîne -terminated est une petite quantité de travail qui peut devenir significative si votre code doit le faire constamment. Le résultat est temporaire, car toute modification apportée au CString contenu invalide les anciennes copies du LPCTSTR pointeur.

Il est judicieux dans certains cas de fournir une chaîne de style C. Par exemple, il peut y avoir une situation où une fonction appelée est écrite en C et ne prend pas en charge les objets. Dans ce cas, forcez le CString paramètre à LPCTSTR, et la fonction obtient une chaîne c-style NULL-terminated. Vous pouvez également aller dans l’autre direction et créer un CString objet à l’aide du CString constructeur qui accepte un paramètre de chaîne de style C.

Si le contenu de la chaîne doit être modifié par une fonction, déclarez le paramètre en tant que référence nonconstante CString (CString&).

Chaînes en tant que sorties de fonction

En règle générale, vous pouvez retourner CString des objets à partir de fonctions, car CString les objets suivent la sémantique de valeur comme les types primitifs. Pour renvoyer une chaîne en lecture seule, utilisez une référence constante CString (const CString&). L’exemple suivant illustre l’utilisation de paramètres et de types de CString retour :

class CName : public CObject
{
private:
   CString m_firstName;
   TCHAR m_middleInit;
   CString m_lastName;
public:
   CName() {}
   void SetData(LPCTSTR fn, const TCHAR mi, LPCTSTR ln)
   {
      m_firstName = fn;
      m_middleInit = mi;
      m_lastName = ln;
   }
   void GetData(CString& cfn, TCHAR& mi, CString& cln)
   {
      cfn = m_firstName;
      mi = m_middleInit;
      cln = m_lastName;
   }
   CString GetLastName()
   {
      return m_lastName;
   }
};

 

CName name;
CString last, first;
TCHAR middle;
name.SetData(_T("John"), 'Q', _T("Public"));
ASSERT(name.GetLastName() == _T("Public"));
name.GetData(first, middle, last);
ASSERT((first == _T("John")) && (last == _T("Public")));

Voir aussi

Chaînes (ATL/MFC)