Membandingkan string
8.4. Membandingkan string
Operator assignment dan dengan string, operator tersebut operator relasional bekerja dengan membandingkan alamat-alamat class string pada bahasa C++ string
dimana strings tersebut disimpan karena mereka dapat terjadi overload
daripada membandingkan karakter yang bekerja bersama kelas tersebut.
yang berurutan secara nyata yang Meskipun demikian, sama seperti menjadi anggota string tersebut. operator assignment tidak bisa
Program dibawah menunjukkan digunakan untuk memberi pada string
hasil keluaran yang salah dimana
C, operator relasional <=, <, >, >=, !=, program tersebut mencoba dan == tidak bisa digunakan untuk membandingkan string menggunakan membandingkan pada string. Hal ini
persamaan operator diatas. dikarenakan ketika digunakan
Program 8.5. #include <iostream>
using namespace std;
int main() {
const int LENGTH = 40 ;
char firstString[LENGTH], secondString[LENGTH];
cout << "Masukan string: " ; cin.getline(firstString, LENGTH); cout << "Masukan string lain: " ; cin.getline(secondString, LENGTH);
Direktorat Pembinaan SMK| 2008
Operasi String Bahasa Pemrorgraman
if (firstString == secondString) cout << "Yang anda masukan stringnya sama\n" ; else cout << "String Tidak Sama.\n" ; return 0 ; }
Keluaran program diatas adalah: Masukan string: Alfonso[Enter] Masukan string lain: Alfonso[Enter] String Tidak Sama.
Meskipun kedua string tersebut alamat-alamat yang berbeda, yang dimasukan serupa, Program kemudian memberi suatu nilai hasil diatas akan melaporkan bahwa yang salah. mereka tidaklah sama. Hal ini dikarenakan adanya instruksi dibawah ini:
8.4.1. Fungsi strcmp
Untuk membandingkan string firstString == secondString
pada C dengan baik, maka perlu menggunakan fungsi library strcmp.
hal yang digunakan dalam dalam Fungsi ini mengambil dua string program diatas adalah statemen IF sebagai parameter dan untuk membandingkan alamat mengembalikan bilangan integer memori dari dua aray tersebut, untuk menandai,bagaimana dua daripada membandingkan karakter string dibandingkan antara satu sama string dan menyimpan alamat lain. Perhatikan instruksi dibawah ini: tersebut. Karena alamatnya berbeda, maka perbandingan menghasilkan int strcmp(char *string1, char *string2); suatu hasil yang salah. Sebenarnya, dalam bahasa C++, perbandingan menunjukkan bahwa fungsi dapat dilakukan seperti dibawah ini:
pengambilan dua string pada C sebagai parameter dan
"abc" == "abc" mengembalikan hasil bilangan integar. Nilai dari hasil tersebut diatur
Biasanya instruksi diatas akan menurut aturan sebagai berikut: menghasilkan suatu hasil yang salah.
Hasilnya kosong jika kedua string Ini dikarenakan kebanyakan compiler
adalah sama pada karakter tidak memeriksa atau melihat jika
melalui karakter dasar konstanta string sudah ditemui Hasilnya negatif jika string1 sebelumnya, dan akan menyimpan
datang sebelum string2 dalam kedua string-string pada alamat
urutan menurut abjad
memori yang berbeda. Compiler tersebut akan membandingkan kedua
2008 | Direktorat Pembinaan SMK
Bahasa Pemrograman Operasi String
Hasilnya positif jika string1 else mengikuti string2 dalam urutan cout << "String tidak sama" ; menurut abjad Perhatikan contoh program dengan
Pada program diatas, yang menggunakan strcmp untuk hasilnya salah adalah untuk menguji menentukan kesamaan dua buah dua buah string dengan operator string:
relational, dapat ditulis ulang secara benar dengan fungsi strcmp, seperti yang ditunjukkan pada program if(strcmp(string1, string2) == 0 ) dibawah ini:
cout << "string adalah sama" ;
Program 8.6 #include <iostream> #include <cstring>
using namespace std;
int main() {
const int LENGTH = 40 ;
char firstString[LENGTH], secondString[LENGTH];
cout << "Masukan String: " ; cin.getline(firstString, LENGTH); cout << "Masukan string lain: " ; cin.getline(secondString, LENGTH);
if (strcmp(firstString, secondString) == 0 )
cout << "Yang anda masukan stringnya sama\n" ; else cout << "String tidak sama.\n" ; return 0 ; }
Keluaran program diatas adalah sebagai berikut: Masukan String: Alfonso[Enter] Masukan string lain: Alfonso[Enter] Yang anda masukan stringnya sama
Fungsi strcmp bersifat case- "anjing" pada program diatas, maka sensitive ketika digunakan untuk akan melaporkan bahwa kedua string membandingkan string. Jika tidaklah sama karena ada perbedaan pengguna memasukan "Anjing" dan
huruf kapital dan kecil pada kata 300
Direktorat Pembinaan SMK| 2008
Operasi String Bahasa Pemrorgraman
anjing. Kebanyakan compiler strcmp digunakan. Hal tersebut akan menyediakan strcmp versi tidak minta kepada user untuk memasukan standar untuk melaksanakan sejumlah angka lebih dari satu sesuai perbandingan case-insensitive.
dengan yang mereka beli. Bagian
Sebagai contoh, Borland C++ angka merupakan digit, huruf, dan mempunyai fungsi stricmp. Hal tanda penghubung, sehingga dengan tersebut hampir sama dengan demikian hal tersebut akan disimpan strcmp kecuali mengenai case dari sebagai suatu string. Begitu karakter tersebut yang akan pengguna memasukan angka, diabaikan.
program akan menampilkan harga Program dibawah ini adalah tersebut. contoh yang lebih praktis bagaimana
Program 8.7 include<conio.h> #include <iostream>
#include <cstring> #include <iomanip>
using namespace std;
int main() { const double A_PRICE = 100.00 , B_PRICE = 150.00 ;
const int PART_LENGTH = 8 ;
char partNum[PART_LENGTH];
cout << "kode nomer ganda adalah:\n" ; cout << "\tKotak besar, kode nomernya: S147‐29A\n" ; cout << "\tRak Besar, kode nomernya: S147‐29B\n" ; cout << "masukan kode nomer yang ada\n" ; cout << "ingin membeli: " ;
cin >> setw( 9 ); cin >> partNum; cout << showpoint << fixed;
cout << setprecision( 2 ); if (strcmp(partNum, "S147 ‐29A" ) == 0 )
cout << "harganya adalah $" << A_PRICE << endl;
else if (strcmp(partNum, "S147 ‐29B" ) == 0 )
cout << "harganya adalah $" << B_PRICE << endl;
else
cout << partNum << " nomer yang dimasukan tidak sah.\n" ; getch();
return 0 ;
2008 | Direktorat Pembinaan SMK
Bahasa Pemrograman Operasi String
Keluaran program diatas adalah sebagai berikut: kode nomer ganda adalah: Kotak besar, kode nomernya: S147‐29A Rak Besar, kode nomernya: S147‐29B masukan kode nomer yang ada ingin membeli: S147‐29A[Enter] harganya adalah $100.00