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 NULL
chaî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")));