CString传递

本文说明如何传递到函数的 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")));

请参见

其他资源

字符串(ATL/MFC)