Library String Bahasa C++

296 Direktorat Pembinaan SMK| 2008 length = strlenThomas Edison; Contoh lain suatu fungsi penanganan string pada C adalah strcat. Fungsi strcat mengambil dua string ketika sebuah parameter menggabungkan mereka, mengembalikan suatu string yang terdiri dari semua karakter yang diikuti string pertama oleh karakter string kedua. Di bawah ini adalah satu contoh penggunaan pada program: char string1[ 13 ] = Hello ; char string2[ 7 ] = World ; cout string1 endl; cout string2 endl; strcatstring1, string2; cout string1 endl; pernyatan-pernyataan tersebut akan menghasilkan keluaran sebagai berikut: Hello World Hello World Fungsi strcat untuk menyalin isi dari string2 hingga selesai dari string1. Di dalam contoh ini, string1 berisi string Hello sebelum memanggil ke strcat. Setelah panggilan dilakukan, maka nilainya akan berisi string Hello World. Gambar dibawah menunjukkan isi dari kedua array sebelum dan setelah fungsi tersebut dipanggil. 2008 | Direktorat Pembinaan SMK 297 Sebelum memanggil strcat string1,string2; String1 H e l l o \0 String2 W o r l d \0 Setelah memanggil strcat string1, string2 String1 H e l l o W o r l d \0 String2 W o r l d \0 karakter yang terakhir pada string1 sebelum tanda null adalah sebagai ruang atau space. Fungsi strcat tidak untuk menyisipkan sebuah ruang, dengan demikian hal tersebut adalah tanggung jawab seorang programmer bahwa space telah dipastikan satu telah di sana, jika hal tersebut diperlukan. Hal tersebut merupakan tugas seorang programmer untuk memastikan bahwa array dapat menjaga string1 dan sudah cukup besar untuk menahan string1 dan string2 serta tanda akhiran null. Pada kasus ini, sebuah segmen program yang menggunakan operator sizeof untuk menguji ukuran array sebelum strcat dipanggil: if sizeofstring1 = strlenstring1+ strlenstring2+ 1 strcatstring1, string2; else cout String1 tidak cukup besar untuk kedua string tersebut.\n ; Array tidak bisa ditugaskan selain dengan operator = . Masing- masing unsur individu harus mempunyai tugas, biasanya di dalam sebuah program pengulangan. Fungsi strcpy, dapat digunakan untuk menyalin sebuah string ke bentuk yang lain. Contoh penggunaannya dapat dilihat pada program dibawah ini: char name[ 20 ]; strcpyname, Albert Einstein ; 298 Direktorat Pembinaan SMK| 2008 Alasan penggunaan fungsi strcpy adalah string pada bahasa C. String yang kedua dicopy pada alamat yang ditetapkan oleh argumen string yang pertama. Jika sesuatu sudah disimpan di dalam lokasi yang telah disesuaikan oleh argumen yang pertama, hal tersebut akan terjadi overwritten, seperti ditunjukkan dalam segmen program berikut ini: char string1[ 10 ] = Hello , string2[ 10 ] = World ; cout string1 endl; cout string2 endl; strcpystring1, string2; cout string1 endl; cout string2 endl; sehingga keluaran program adalah sebagai berikut: Hello World World World

8.4. Membandingkan string

Operator assignment dan operator relasional bekerja dengan class string pada bahasa C++ string karena mereka dapat terjadi overload yang bekerja bersama kelas tersebut. Meskipun demikian, sama seperti operator assignment tidak bisa digunakan untuk memberi pada string C, operator relasional =, , , =, =, dan == tidak bisa digunakan untuk membandingkan pada string. Hal ini dikarenakan ketika digunakan dengan string, operator tersebut membandingkan alamat-alamat dimana strings tersebut disimpan daripada membandingkan karakter yang berurutan secara nyata yang menjadi anggota string tersebut. Program dibawah menunjukkan hasil keluaran yang salah dimana program tersebut mencoba membandingkan string menggunakan persamaan operator diatas. Program 8.5. include iostream using namespace std; int main { const int LENGTH = 40 ; char firstString[LENGTH], secondString[LENGTH]; cout Masukan string: ; cin.getlinefirstString, LENGTH; cout Masukan string lain: ; cin.getlinesecondString, LENGTH; 2008 | Direktorat Pembinaan SMK 299 if firstString == secondString cout Yang anda masukan stringnya sama\n ; else cout String Tidak Sama.\n ; return ; } Keluaran program diatas adalah: Masukan string: Alfonso[Enter] Masukan string lain: Alfonso[Enter] String Tidak Sama. Meskipun kedua string tersebut yang dimasukan serupa, Program diatas akan melaporkan bahwa mereka tidaklah sama. Hal ini dikarenakan adanya instruksi dibawah ini: firstString == secondString hal yang digunakan dalam dalam program diatas adalah statemen IF untuk membandingkan alamat memori dari dua aray tersebut, daripada membandingkan karakter string dan menyimpan alamat tersebut. Karena alamatnya berbeda, maka perbandingan menghasilkan suatu hasil yang salah. Sebenarnya, dalam bahasa C++, perbandingan dapat dilakukan seperti dibawah ini: abc == abc Biasanya instruksi diatas akan menghasilkan suatu hasil yang salah. Ini dikarenakan kebanyakan compiler tidak memeriksa atau melihat jika konstanta string sudah ditemui sebelumnya, dan akan menyimpan kedua string-string pada alamat memori yang berbeda. Compiler tersebut akan membandingkan kedua alamat-alamat yang berbeda, kemudian memberi suatu nilai hasil yang salah.

8.4.1. Fungsi strcmp

Untuk membandingkan string pada C dengan baik, maka perlu menggunakan fungsi library strcmp. Fungsi ini mengambil dua string sebagai parameter dan mengembalikan bilangan integer untuk menandai,bagaimana dua string dibandingkan antara satu sama lain. Perhatikan instruksi dibawah ini: int strcmpchar string1, char string2; menunjukkan bahwa fungsi pengambilan dua string pada C sebagai parameter dan mengembalikan hasil bilangan integar. Nilai dari hasil tersebut diatur menurut aturan sebagai berikut:  Hasilnya kosong jika kedua string adalah sama pada karakter melalui karakter dasar  Hasilnya negatif jika string1 datang sebelum string2 dalam urutan menurut abjad