Freigeben über


CString Übergeben von Argumenten

In diesem Artikel wird erläutert, wie Objekte an Funktionen übergeben CString werden und wie Objekte von Funktionen zurückgegeben CString werden.

CString Argumentübergabekonventionen

Wenn Sie eine Klassenschnittstelle definieren, müssen Sie die Konvention zum Übergeben von Argumenten für Ihre Memberfunktionen bestimmen. Es gibt einige Standardregeln zum Übergeben und Zurückgeben von CString Objekten. Wenn Sie die in Zeichenfolgen als Funktionseingaben und Zeichenfolgen als Funktionsausgabe beschriebenen Regeln befolgen, verfügen Sie über effizienten, richtigen Code.

Zeichenfolgen als Funktionseingaben

Die effizienteste und sichere Möglichkeit, ein CString Objekt in aufgerufenen Funktionen zu verwenden, besteht darin, ein CString Objekt an die Funktion zu übergeben. Trotz des Namens speichert ein CString Objekt keine Zeichenfolge intern als Zeichenfolge im C-Stil, die über einen NULL Terminator verfügt. Stattdessen verfolgt ein CString Objekt sorgfältig die Anzahl der Zeichen, die es hat. Wenn CString Sie einen LPCTSTR Zeiger auf eine NULLbeendete Zeichenfolge bereitstellen, ist eine kleine Menge Arbeit, die erheblich werden kann, wenn Ihr Code dies ständig tun muss. Das Ergebnis ist temporär, da alle Änderungen an den CString Inhalten alte Kopien des LPCTSTR Zeigers ungültig machen.

In einigen Fällen ist es sinnvoll, eine Zeichenfolge im C-Stil bereitzustellen. Es kann z. B. eine Situation geben, in der eine aufgerufene Funktion in C geschrieben wird und Objekte nicht unterstützt werden. In diesem Fall wandeln Sie den CString Parameter in LPCTSTReine Zeichenfolge mit C-Format um, und die Funktion erhält eine Zeichenfolge im C-Stil NULL. Sie können auch die andere Richtung durchlaufen und ein CString Objekt erstellen, indem Sie den Konstruktor verwenden, der CString einen Zeichenfolgenparameter im C-Stil akzeptiert.

Wenn der Zeichenfolgeninhalt von einer Funktion geändert werden soll, deklarieren Sie den Parameter als nichtkonstanten CString Verweis (CString&).

Zeichenfolgen als Funktionsausgabe

In der Regel können Sie Objekte aus Funktionen zurückgeben CString , da CString Objekte Wertsemantik wie Grundtypen folgen. Um eine schreibgeschützte Zeichenfolge zurückzugeben, verwenden Sie einen Konstantenverweis CString (const CString&). Das folgende Beispiel veranschaulicht die Verwendung von CString Parametern und Rückgabetypen:

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

Siehe auch

Zeichenfolgen (ATL/MFC)