Bagikan melalui


CString Pengoperasian Argumen

Artikel ini menjelaskan cara meneruskan CString objek ke fungsi dan cara mengembalikan CString objek dari fungsi.

CString Konvensi Pengoperasian Argumen

Saat menentukan antarmuka kelas, Anda harus menentukan konvensi pengesahan argumen untuk fungsi anggota Anda. Ada beberapa aturan standar untuk meneruskan dan mengembalikan CString objek. Jika Anda mengikuti aturan yang dijelaskan dalam String sebagai Input dan String Fungsi sebagai Output Fungsi, Anda akan memiliki kode yang efisien dan benar.

String sebagai Input Fungsi

Cara paling efisien dan aman untuk menggunakan CString objek dalam fungsi yang disebut adalah meneruskan CString objek ke fungsi. Terlepas dari namanya, CString objek tidak menyimpan string secara internal sebagai string gaya C yang memiliki NULL terminator. Sebagai gantinya, objek CString tetap melacak dengan cermat jumlah karakter yang dimilikinya. Setelah CString menyediakan LPCTSTR pointer ke NULLstring yang dihentikan adalah sejumlah kecil pekerjaan yang dapat menjadi signifikan jika kode Anda harus melakukannya terus-menerus. Hasilnya bersifat sementara karena setiap perubahan pada CString konten membatalkan salinan lama pointer LPCTSTR .

Masuk akal dalam beberapa kasus untuk menyediakan string gaya C. Misalnya, mungkin ada situasi di mana fungsi yang disebut ditulis dalam C dan tidak mendukung objek. Dalam hal ini, paksa CString parameter ke LPCTSTR, dan fungsi akan mendapatkan string yang dihentikan gaya NULLC. Anda juga dapat pergi ke arah lain dan membuat CString objek dengan menggunakan CString konstruktor yang menerima parameter string gaya C.

Jika konten string akan diubah oleh fungsi, nyatakan parameter sebagai referensi nonkonstant CString (CString&).

String sebagai Output Fungsi

Biasanya Anda dapat mengembalikan CString objek dari fungsi karena CString objek mengikuti semantik nilai seperti jenis primitif. Untuk mengembalikan string baca-saja, gunakan referensi konstanta CString (const CString&). Contoh berikut mengilustrasikan penggunaan CString parameter dan jenis pengembalian:

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

Lihat juga

String (ATL/MFC)