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 NULL
beendete 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 LPCTSTR
eine 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")));