CString Argument Passing
本文件說明如何傳遞至函式的 CString 物件以及如何從函式傳回 CString 物件。
CString 引數傳遞給方法的慣例
當您定義類別介面時,您必須決定您的成員函式的引數傳遞給方法的慣例。 會傳遞和傳回的物件 CString 某些標準規則。 如果您遵循此 當輸入字串函式 和 當字串函式輸出說明的規則,則會有更有效率,正確的程式碼。
當輸入字串函式
最有效率且最安全的方式使用 CString 物件在呼叫的函式會傳遞至函式的 CString 物件。 儘管這個名稱, CString 物件內部沒有儲存字串時有 null 結束字元的 C++. 格式的樣式。 相反地, CString 物件保存它有字元數的謹慎地追蹤。 具有 CString 供具 LPCTSTR 指標的 NULL 結尾字串可能變得相當大的少量工作,如果您的程式碼必須經常執行。 因為對 CString 內容進行任何變更失效 LPCTSTR 指標,舊複本結果是暫時的。
因此才會在特定情況下提供 C++. 格式的樣式。 例如,可能有所呼叫函式以 C 撰寫的狀況,並不支援物件。 在這種情況下,請強制 CString 參數設定為, LPCTSTR,而且函式會取得 . C 樣式以 null 結尾的字串。 您也可以移至另一個方向和建立 CString 物件使用接受 . C 樣式字串參數的 CString 建構函式。
如果字串內容要被函式變更,請為非常數 CString 參考 (CString_&) 宣告參數。
當字串函式輸出
通常,因為 CString 物件後面的類似基本型別的值,語意。您可以從函式傳回 CString 物件。 若要傳回唯讀字串,請使用常數 CString 參考 (const CString_&)。 下列範例說明如何使用 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")));