CString-Argument-Übergeben
In diesem Artikel wird beschrieben, wie CString-Objekte an Funktionen übergeben werden und wie CString-Objekte von den Funktionen zurückgegeben werden.
Argument-Übergebende Konventionen CString
Wenn Sie eine Klassenschnittstelle definieren, müssen Sie die Argument-übergebende Konvention für die Memberfunktionen bestimmen.Es gibt mehrere Standardregeln zum Übergeben und Rückgabe von CString-Objekten.Wenn Sie den Regeln entsprechen, die in Zeichenfolgen als Funktions-Eingaben und in Zeichenfolgen als Funktions-Ausgaben beschrieben werden, haben Sie effizienten, korrekte Code.
Zeichenfolgen als Funktions-Eingaben
Die effizienteste und sicherste Methode, ein CString-Objekt in den aufgerufenen Funktionen zu verwenden ist, ein CString-Objekt zur Funktion zu übergeben.Trotz des Namens speichert ein CString-Objekt eine Zeichenfolge intern nicht als Zeichenfolge in C-Format, die ein NULL-Abschlusszeichen aufweist.Stattdessen verfolgt ein CString-Objekt gesichertes die Anzahl von Zeichen, die sie hat.CString resultieren, erstellen Sie einen LPCTSTR Zeiger auf eine auf NULL endende Zeichenfolge ist eine kleine Menge an Arbeit bereit, die bedeutsam werden kann, wenn der Code sie ständig ausführen muss.Das Ergebnis ist temporär, da jeder Änderung am CString Inhalt alte Kopien des Zeigers LPCTSTR ungültig werden.
Es ist sinnvoll, eine Zeichenfolge in C-Format in einigen Fällen bereitzustellen.So kann es beispielsweise geben eine Situation, in der eine aufgerufene Funktion in C geschrieben und unterstützt keine Objekte.In diesem Fall wandeln Sie den CString-Parameter zu LPCTSTR um, und die Funktion ruft eine auf NULL endende Zeichenfolge eine ab.Sie können auch wechseln die andere Richtung und ein CString-Objekt erstellen, indem Sie den CString-Konstruktor verwenden, einer ein Zeichenfolgenparameter akzeptiert.
Wenn der Zeichenfolgeninhalt durch eine Funktion geändert werden soll, deklarieren Sie den Parameter als Verweis nicht konstanter CString (CString&).
Zeichenfolgen als Funktions-Ausgaben
In der Regel können Sie CString-Objekte von den Funktionen zurückgeben, da CString-Objekte Wertsemantik bezeichnet wie primitive Typen folgen.Wenn eine schreibgeschützte Zeichenfolge zurückzugeben, verwenden Sie einen konstanten Verweis CString (const CString&).Das folgende Beispiel veranschaulicht die Verwendung von CString-Parameter und Rückgabetyp:
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")));