Manajemen Data String
Visual C++ menyediakan beberapa cara untuk mengelola data string:
Manipulasi String untuk bekerja dengan string bergaya C
NULL
yang dihentikanFungsi API Win32 untuk mengelola string
Kelas MFC
CStringT
, yang menyediakan objek string yang fleksibel dan dapat diubah namanyaKelas
CStringT
Kelas, yang menyediakan objek string independen MFC dengan fungsionalitas yang sama denganCString
Hampir semua program bekerja dengan data string. Kelas MFC CString
sering kali menjadi solusi terbaik untuk penanganan string yang fleksibel. Dimulai dengan versi 7.0, CString
dapat digunakan dalam program independen MFC atau MFC. Pustaka run-time dan CString
string dukungan yang berisi karakter multibyte (lebar), seperti dalam pemrograman Unicode atau MBCS.
Artikel ini menjelaskan layanan tujuan umum yang disediakan pustaka kelas terkait dengan manipulasi string. Topik yang dibahas dalam artikel ini meliputi:
Kelas Kelas CStringT
menyediakan dukungan untuk memanipulasi string. Ini dimaksudkan untuk mengganti dan memperluas fungsionalitas yang biasanya disediakan oleh paket string pustaka run-time C. Kelas ini CString
menyediakan fungsi dan operator anggota untuk penanganan string yang disederhanakan, mirip dengan yang ditemukan di Dasar. Kelas ini juga menyediakan konstruktor dan operator untuk membangun, menetapkan, dan membandingkan CString
jenis data string C++ standar dan s dan standar. Karena CString
tidak berasal dari CObject
, Anda dapat menggunakan CString
objek secara independen dari sebagian besar Microsoft Foundation Class Library (MFC).
CString
objek mengikuti "semantik nilai." Objek CString
mewakili nilai unik. Anggap sebagai string aktual CString
, bukan sebagai penunjuk ke string.
Objek CString
mewakili urutan jumlah karakter variabel. CString
objek dapat dianggap sebagai array karakter.
Unicode dan MBCS Menyediakan Portabilitas
Dengan MFC versi 3.0 dan yang lebih baru, MFC, termasuk CString
, diaktifkan untuk set karakter Unicode dan multibyte (MBCS). Dukungan ini memudahkan Anda untuk menulis aplikasi portabel yang dapat Anda buat untuk karakter Unicode atau ANSI. Untuk mengaktifkan portabilitas ini, setiap karakter dalam CString
objek berjenis TCHAR
, yang didefinisikan seolah-olah wchar_t
Anda menentukan simbol _UNICODE
saat Anda membangun aplikasi Anda, atau seolah-olah char
tidak. Karakter wchar_t
memiliki lebar 16 bit. MBCS diaktifkan jika Anda membangun dengan simbol _MBCS
yang ditentukan. MFC sendiri dibangun dengan _MBCS
simbol (untuk pustaka NAFX) atau _UNICODE
simbol (untuk pustaka UAFX) yang ditentukan.
Catatan
Contoh CString
dalam artikel ini dan yang menyertainya pada string menunjukkan string harfiah yang diformat dengan benar untuk portabilitas Unicode, menggunakan _T
makro, yang menerjemahkan string harfiah ke formulir:
L"literal string"
Catatan
yang diperlakukan pengkompilasi sebagai string Unicode. Misalnya, kode berikut:
CString strName = _T("Name");
Catatan
diterjemahkan sebagai string Unicode jika _UNICODE
didefinisikan atau sebagai string ANSI jika tidak. Untuk informasi selengkapnya, lihat artikel Dukungan Unicode dan Multibyte Character Set (MBCS).
Objek CString
dapat menyimpan hingga INT_MAX
(2.147.483.647) karakter. Jenis TCHAR
data digunakan untuk mendapatkan atau mengatur karakter individual di dalam CString
objek. Tidak seperti array karakter, CString
kelas memiliki kemampuan alokasi memori bawaan. Ini memungkinkan CString
objek untuk tumbuh secara otomatis sesuai kebutuhan (yaitu, Anda tidak perlu khawatir tentang menumbuhkan CString
objek agar pas dengan string yang lebih panjang).
CStrings
dan const char
Pointer
Objek CString
juga dapat bertindak seperti string gaya C harfiah PCXSTR
(, yang sama seperti const char*
jika tidak di bawah Unicode). Operator CSimpleStringT::operator PCXSTR
konversi memungkinkan CString
objek diganti dengan bebas untuk penunjuk karakter dalam panggilan fungsi. CString(LPCWSTR pszSrc)
Konstruktor memungkinkan penunjuk karakter diganti dengan CString
objek.
Tidak ada upaya yang dilakukan untuk melipat CString
objek. Jika Anda membuat dua CString
objek yang berisi Chicago
, misalnya, karakter di Chicago
disimpan di dua tempat. (Ini mungkin tidak benar tentang versi MFC di masa mendatang, jadi Anda tidak boleh bergantung padanya.)
Catatan
CSimpleStringT::GetBuffer
Gunakan fungsi anggota dan CSimpleStringT::ReleaseBuffer
saat Anda perlu langsung mengakses CString
sebagai penunjuk nonkonstant ke karakter.
Catatan
CStringT::AllocSysString
Gunakan fungsi anggota dan CStringT::SetSysString
untuk mengalokasikan dan mengatur BSTR
objek yang digunakan dalam Automation (sebelumnya dikenal sebagai OLE Automation).
Catatan
Jika memungkinkan, alokasikan CString
objek pada bingkai daripada pada timbunan. Ini menyimpan memori dan menyederhanakan pengeluaran parameter.
Kelas CString
ini tidak diimplementasikan sebagai kelas koleksi Pustaka Kelas Microsoft Foundation, meskipun CString
objek pasti dapat disimpan sebagai elemen dalam koleksi.
CString
Penghitungan Referensi
Pada MFC versi 4.0, ketika CStringT
objek Kelas disalin, MFC meningkatkan jumlah referensi daripada menyalin data. Hal ini membuat meneruskan parameter berdasarkan nilai dan mengembalikan CString
objek berdasarkan nilai lebih efisien. Operasi ini menyebabkan konstruktor salinan dipanggil, kadang-kadang lebih dari sekali. Meningkatkan jumlah referensi mengurangi overhead untuk operasi umum ini dan membuat penggunaan CString
opsi yang lebih menarik.
Saat setiap salinan dihancurkan, jumlah referensi dalam objek asli diderementasikan. Objek asli CString
tidak dihancurkan sampai jumlah referensinya berkurang menjadi nol.
Anda dapat menggunakan CString
fungsi CSimpleStringT::LockBuffer
anggota dan CSimpleStringT::UnlockBuffer
untuk menonaktifkan atau mengaktifkan penghitungan referensi.