Bagikan melalui


Operasi CString Dasar

Topik ini menjelaskan operasi CString dasar berikut:

Class CStringdidasarkan 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 lain CString .

    CString oldString = _T("This is a test");
    CString newString = oldString;
    

    Konten CString objek disalin ketika satu CString objek ditetapkan ke objek lainnya. Oleh karena itu, kedua string tidak berbagi referensi ke karakter aktual yang membentuk string. Untuk informasi selengkapnya tentang cara menggunakan CString 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