Operasi CString Dasar
Topik ini menjelaskan operasi CString dasar berikut:
Class CString
didasarkan pada kelas templat Kelas CStringT. CString
adalah typedef
dari CStringT
. Lebih tepatnya, CString
adalah typedef
spesialisasi eksplisit dari CStringT
, yang merupakan cara umum untuk menggunakan templat kelas untuk menentukan kelas. Kelas yang ditentukan serupa adalah CStringA
dan CStringW
.
CString
, CStringA
, dan CStringW
didefinisikan dalam atlstr.h. CStringT
didefinisikan dalam cstringt.h.
CString
, CStringA
, dan CStringW
masing-masing mendapatkan sekumpulan metode dan operator yang ditentukan oleh CStringT
untuk digunakan dengan data string yang mereka dukung. Beberapa metode menduplikasi dan, dalam beberapa kasus, melampaui layanan string pustaka run-time C.
Catatan: CString
adalah kelas asli. Untuk kelas string yang digunakan dalam proyek terkelola C++/CLI, gunakan System.String
.
Membuat Objek CString dari String Literal C Standar
Anda dapat menetapkan string literal gaya C ke CString
sama seperti Anda dapat menetapkan satu CString
objek ke objek lainnya.
Tetapkan nilai string harfiah C ke
CString
objek.CString myString = _T("This is a test");
Tetapkan nilai satu
CString
ke objek lainCString
.CString oldString = _T("This is a test"); CString newString = oldString;
Konten
CString
objek disalin ketika satuCString
objek ditetapkan ke objek lainnya. Oleh karena itu, kedua string tidak berbagi referensi ke karakter aktual yang membentuk string. Untuk informasi selengkapnya tentang cara menggunakanCString
objek sebagai nilai, lihat Semantik CString.Catatan
Untuk menulis aplikasi Anda sehingga dapat dikompilasi untuk Unicode atau untuk ANSI, kode string literal dengan menggunakan makro _T. Untuk informasi selengkapnya, lihat Dukungan Unicode dan Multibyte Character Set (MBCS).
Mengakses Karakter Individu dalam CString
Anda dapat mengakses karakter individual dalam CString
objek dengan menggunakan GetAt
metode dan SetAt
. Anda juga dapat menggunakan elemen array, atau subskrip, operator ( [ ] ) alih-alih GetAt
mendapatkan karakter individual. (Ini menyerupan mengakses elemen array menurut indeks, seperti dalam string gaya C standar.) Nilai indeks untuk CString
karakter berbasis nol.
Menggabungkan Dua Objek CString
Untuk menggabungkan dua CString
objek, gunakan operator perangkaian (+ atau +=), sebagai berikut.
CString s1 = _T("This "); // Cascading concatenation
s1 += _T("is a ");
CString s2 = _T("test");
CString message = s1 + _T("big ") + s2;
// Message contains "This is a big test".
Setidaknya satu argumen ke operator perangkaian (+ atau +=) harus berupa CString
objek, tetapi Anda dapat menggunakan string karakter konstanta (misalnya, "big"
) atau char
(misalnya, 'x') untuk argumen lainnya.
Membandingkan Objek CString
Metode Compare
dan operator == untuk CString
setara. Compare
, operator==, dan CompareNoCase
sadar MBCS dan Unicode; CompareNoCase
juga tidak peka huruf besar/kecil. Metode Collate
CString
sensitif terhadap lokal dan sering lebih lambat daripada Compare
. Gunakan Collate
hanya di mana Anda harus mematuhi aturan pengurutan seperti yang ditentukan oleh lokal saat ini.
Tabel berikut menunjukkan fungsi perbandingan CString yang tersedia dan fungsi portabel Unicode/MBCS yang setara di pustaka run-time C.
Fungsi CString | Fungsi MBCS | Fungsi Unicode |
---|---|---|
Compare |
_mbscmp |
wcscmp |
CompareNoCase |
_mbsicmp |
_wcsicmp |
Collate |
_mbscoll |
wcscoll |
Templat CStringT
kelas menentukan operator relasional (<, =, <=, >>, ==, dan !=), yang tersedia untuk digunakan oleh CString
. Anda dapat membandingkan dua CStrings
dengan menggunakan operator ini, seperti yang ditunjukkan dalam contoh berikut.
CString s1(_T("Tom"));
CString s2(_T("Jerry"));
ASSERT(s2 < s1);
Mengonversi Objek CString
Untuk informasi tentang mengonversi objek CString ke jenis string lainnya, lihat Cara: Mengonversi Antara Berbagai Jenis String.
Menggunakan CString dengan wcout
Untuk menggunakan CString dengan wcout
Anda harus secara eksplisit melemparkan objek ke seperti yang const wchar_t*
ditunjukkan dalam contoh berikut:
CString cs("meow");
wcout << (const wchar_t*) cs << endl;
Tanpa pemeran, cs
diperlakukan sebagai void*
dan wcout
mencetak alamat objek. Perilaku ini disebabkan oleh interaksi halus antara pengurangan argumen templat dan resolusi kelebihan beban yang benar dan sesuai dengan standar C++.
Lihat juga
String (ATL/MFC)
Kelas CStringt
Spesialisasi Templat
Cara: Mengonversi Antara Berbagai Jenis String