Sdílet prostřednictvím


Argument CString předávání

Tento článek vysvětluje způsob předání CString objekty funkce a vrátit CString objekty z funkce.

Konvence předávání Argument CString

Při definování třídy rozhraní je třeba určit argument předávání úmluvy pro členské funkce.Existují některé standardní pravidla pro předávání a vrácení CString objektů.Pokud budete postupovat podle pravidel popsaných v řetězce jako vstupy funkce a řetězců jako funkce výstupů, bude mít účinný a správný kód.

Řetězce jako funkce vstupy

Nejvíce efektivní a bezpečný způsob použití CString objekt s názvem funkce je předat CString funkci objektu.Navzdory názvu CString objektu neukládá řetězec interně jako řetězec c styl, který má hodnotu null zakončení.Místo toho CString objektu sleduje pečlivě sledovat počet znaků, které obsahuje.S CString poskytují LPCTSTR ukazatel na řetězec zakončený hodnotou null je malé množství práce, která může být podstatné, pokud má kód k neustále.Výsledkem je dočasné, protože jakékoli změny CString obsah zruší platnost staré kopie LPCTSTR ukazatel.

V některých případech poskytnout řetězec c styl jej dávat smysl.Například může být situace, kde volaná funkce je napsán v c a nepodporuje objekty.V tomto případě převodní CString parametr LPCTSTR , a funkce se zobrazí řetězec zakončený c styl.Můžete také přejít opačným směrem a vytvořit CString objektu pomocí CString konstruktor, který přijímá parametr řetězec c styl.

Pokud funkci změnit obsah řetězce, deklarovat parametr jako nonconstant CString odkaz (CString &).

Řetězce jako funkce výstupů

Můžete obvykle vrátit CString z funkce objekty, protože CString objekty podle hodnoty sémantiku jako primitivní typy.Vrátí řetězec jen pro čtení, použijte konstantu CString odkaz (const CString &).Následující příklad ukazuje použití CString parametry a návratové typy:

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

Viz také

Další zdroje

Řetězce (ATL/MFC)