CString 引数の渡し方
更新 : 2007 年 11 月
ここでは CString オブジェクトを関数の引数や戻り値として利用する方法について説明します。
CString の引数渡し規約
クラスのインターフェイスを定義するときは、メンバ関数の引数渡し規約を決める必要があります。CString オブジェクトを関数の引数または戻り値として使用する場合はいくつかの標準的な規則があります。これらの規則 (「関数入力として文字列を利用する場合」と「関数出力として文字列を利用する場合」を参照) に従うと、コードが効率的で正確になります。
関数入力として文字列を利用する場合
文字列を関数の入力にする場合は、文字列パラメータとして LPCTSTR 型を宣言するのが最適です。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")));