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