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:
charstring1[10]="Hello",string2[10]= "World!"; cout<<string1<<endl; cout<<string2<<endl; strcpy(string1,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> usingnamespacestd; intmain() { constintLENGTH=40; charfirstString[LENGTH],secondString[LENGTH]; cout<<"Masukanstring:"; cin.getline(firstString,LENGTH); cout<<"Masukanstringlain:"; cin.getline(secondString,LENGTH); if(firstString==secondString) cout<<"Yangandamasukanstringnyasama\n"; else cout<<"StringTidakSama.\n"; return0; }
Keluaran program diatas adalah: Masukanstring:Alfonso[Enter] Masukanstringlain:Alfonso[Enter] StringTidakSama. 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: intstrcmp(char*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
Next read ON halaman 6