Passaggio di un argomento di CString

In questo articolo viene illustrato come passare oggetti CString a funzioni e come restituire oggetti CString dalle funzioni.

Convenzioni diPassaggio di CString

Quando si definisce l'interfaccia della classe, è necessario determinare la convenzione di passaggio per le funzioni membro.Esistono alcune regole standard per passare e restituire oggetti CString.Se si seguono le regole riportate in stringhe come input di funzione e in stringhe come output di funzione, saranno codice efficiente e corretto.

Stringhe come input di funzione

Il modo più efficiente e sicura utilizzare un oggetto CString nelle funzioni chiamate è passare un oggetto CString alla funzione.Nonostante il nome, un oggetto CString non memorizza una stringa internamente come stringa di tipo c con un carattere di terminazione null.Al contrario, un oggetto CString tiene la barra di avanzamento attenzione al numero di caratteri con.Grazie CString fornire un puntatore LPCTSTR a una stringa con terminazione null è una piccola quantità di lavoro che può diventare significativo se il codice deve farlo costantemente.Il risultato è temporaneo poiché ogni modifica apportata ai contenuti CString invalida le copie recenti del puntatore LPCTSTR.

È opportuno fornire in alcuni casi a-c stringa stile.Ad esempio, potrebbe contenere una situazione in cui una funzione chiamata viene scritta in C e non supporta gli oggetti.In questo caso, assegnare il parametro CString a LPCTSTRe la funzione otterrà a c la stringa con terminazione null stile.È anche possibile passare altra direzione e creare un oggetto CString utilizzando il costruttore CString che accetta il parametro di stringa di tipo c.

Se il contenuto della stringa devono essere modificati da una funzione, dichiarare il parametro come riferimento non costante CString (CString&).

Stringhe come output di funzione

In genere è possibile restituire oggetti CString da funzioni perché gli oggetti CString alla semantica di valore come tipi primitivi.Per restituire una stringa di sola lettura, utilizzare un riferimento costante CString (const CString&).Nell'esempio seguente viene illustrato l'utilizzo di parametri e i tipi restituiti CString :

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")));

Vedere anche

Altre risorse

Stringhe (ATL/MFC)