共用方式為


CString 自變數傳遞

本文說明如何將對象傳遞 CString 至函式,以及如何從函式傳回 CString 物件。

CString 自變數傳遞慣例

當您定義類別介面時,您必須判斷成員函式的自變數傳遞慣例。 傳遞和傳 CString 回物件有一些標準規則。 如果您遵循字串中所述的規則做為函式輸入和字串做為函式輸出,您將有效率、正確的程式代碼。

字串做為函式輸入

在呼叫的函式中使用物件最有效率且最安全的方式 CString 是將對象傳遞 CString 至函式。 儘管有名稱, CString 但物件不會在內部儲存字串做為具有終止符的 NULL C 樣式字串。 相反地, CString 物件會仔細追蹤其擁有的字元數。 CString提供LPCTSTR已終止字串的指標NULL是少量的工作,如果您的程式代碼必須持續執行,可能會變得相當重要。 結果是暫時的,因為對內容所做的任何變更 CString 會使指標的 LPCTSTR 舊複本失效。

在某些情況下,提供 C 樣式字串確實有意義。 例如,在某些情況下,呼叫的函式是以 C 撰寫,且不支援 物件。 在此情況下,將 參數強制 CStringLPCTSTR,而 函式會取得 C 樣式 NULL終止字串。 您也可以使用接受 C 樣式字串參數的CString建構函式,來前往其他方向並建立 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")));

另請參閱

字串 (ATL/MFC)