Sunday, October 8, 2017

Kuliah 8 C++: String C++


BAB 8.
String C++






8.1 Pengantar
STL (standard template library) mempunyai tiga jenis kontainer, yaitu kontainer kelas pertama, kontainer adapter dan kontainer dekat (near). Ada tiga jenis kontainer dekat yang memiliki fungsi-fungsi yang sama dengan kontainer-kontainer lain. Sebagai contoh, kontainer dekat ini mendukung adanya iterator dan memiliki fungsi-fungsi seperti begin() dan end(), dan lainnya. Kontainer-kontainer dekat tersebut adalah bitset, valarray, dan string C++.  Anda telah mempelajari string-C pada Bab 10 yang merupakan array berbasis pointer yang diterminasi dengan karakter Null. String C++ merupakan sebuah string berbasis template kelas. Headernya adalah <string>. String C++ secara fungsional merupakan perbaikan dari string-C. Sebagai contoh, banyak operator yang umum digunakan pada variabel-variabel bertipe fundamental tidak dapat diterapkan pada string-C, meskipun elemen-elemen individual dari string-C bisa diperlakukan sebagai elemen-elemen dari array. Di atas semuanya, string-C merupakan sebuah string dengan panjang tetap. Panjangnya tidak dapat diubah setelah pendeklarasiannya. Semua keterbatasan ini tidak ada pada string C++. String C++ dapat ditugaskan secara menyeluruh dan dapat dimodifikasi selama eksekusi program. Operator-operatot =, !=, ==, >, <. >=, <=, +, << , dan >> dapat diterapkan pada string C++ dengan cara yang sama operator-operator itu diterapkan pada variabel bertipe fundamental. String C++ merupakan string dinamis, karena panjangnya (jumlah elemen) dapat berubah selama eksekusi program. Untuk dapat bekerja dengan string C++, Anda perlu mencantumkan file header <string> di dalam program. String C++ dideklarasikan sebagai berikut:

string pengenal;

Di sini, string adalah nama kelas atau tipe dari objek string dan pengenal adalah nama dari objek.



8.2 Konstruksi dari String C++
Sejumlah konstruktor disediakan di dalam kelas string. String C++ dapat dikonstruksi (diciptakan) menggunakan sejumlah metode berikut:
a.        Dengan mendeklarasikan sebuah string kosong.
b.       Dengan mendeklarasikan dan menginisialisasi dengan string yang memuat karakter-karakter yang diapit dengan kutip ganda.
c.        Dengan menugaskan sejumlah salinan dari sebuah karakter kepada string.
d.       Sebagai salinan dari string lain.
e.        Sebagai substring dari string sekarang dengan menetapkan lokasi indeks dan jumlah karakter.
f.        Sebagai substring dari string sekarang dengan menetapkan iterator awal sampai iterator akhir.

Metode-metode yang disebutkan itu diilustrasikan pada program 8.1 berikut. Pada program, string S diinisialisasi sehingga ia merupakan string tanpa elemen. Hal ini diuji menggunakan fungsi empty(). String Str1 dideklarasikan dan diinisialisasi dengan sebuah string, yang karakter-karakternya diapit di dalam kutip ganda. String Str2 dideklarasikan untuk memiliki 6 elemen, yang masing-masing elemen sama dengan ‘B’. String Str3 merupakan salinan dari string Str1. String Str4 merupakan sebuah substring dari Str1, yang memuat 7 karakter dari string Str1 diawali dari karakter ke-8. String Str5 merupakan sebuah substring dari Str1 dan memiliki elemen-elemen dari elemen pada lokasi iterator (Str1.begin() + 3), yaitu elemen keempat, sampai iterator Str.end(), yaitu akhir dari Str1. String Str6 dikonstruksi dari 8 karakter pertama dari string lain yang diberikan di dalam kutip ganda.

Program 8.1 Mengilustrasikan metode-metode untuk mengkonstruksi string C++

#include <iostream>
#include <string>    //mencantumkan file header <string>
using namespace std;

int main(){
   string S ;

   if(S.empty()) //menguji apakah string S kosong atau tidak
      cout<<"S kosong"<<endl;

   string Str1;
   Str1 = "SELAMAT DATANG!";      /*inisialisasi dengan karakter-karakter di dalam
                             kutip gandar */

   string Str2 (6,'B');           //Str2 dikonstruksi dengan 6 buah karakter 'B'

   string Str3 (Str1);                   //Str3 adalah sebuah salinan dari Str1

   string Str4(Str1,8, 7);        //Str4 dikonstruksi dengan 7 karakter dari Str1
                                  //diawali dari karakter ke-8.

   string Str5 (Str1.begin()+3, Str1.end());
   /*Str5 dikonstruksi dengan iterator (begin()+ 3), yaitu elemen ke-4 dari Str1
     sampai akhir Str1.*/

   string Str6 ("SELAMAT DATANG!!", 8);
   //Str6 dikonstruksi dari 8 karakter pertama dari string yang diapit oleh kutip ganda

   cout<<"Str1 = "<<Str1<<endl;
   cout<<"Str2 = "<<Str2<<endl;;

   cout<<"Str3 = "<<Str3<<endl;
   cout<<"Str4 = "<<Str4<<endl;

   cout<<"Str5 = "<<Str5<<endl;
   cout<<"Str6 = "<<Str6<<endl;

   return 0;
}
KELUARAN
S kosong
Str1 = SELAMAT DATANG!
Str2 = BBBBBB
Str3 = SELAMAT DATANG!
Str4 = DATANG!
Str5 = AMAT DATANG!
Str6 = SELAMAT



8.3 Fungsi-Fungsi dari Kelas string
Sejumlah fungsi yang didukung oleh string C++ berikut dengan penjelasan singkat masing-masing dicantumkan pada Tabel 8.1. Program berikut mengilustrasikan aplikasi dari salah satu fungsi, compare(), yang digunakan untuk membandingkan dua string atau substring. Fungsi ini menghasilkan 1-, 0, dan 1 jika string yang sedang dibandingkan dengan string sekarang secara leskikografikal lebih besar dari, sama dengan, atau lebih kecil dari string sekarang. Sebagai contoh, Z secara leksikografikal lebih besar dari alfabet manapun antara A sampai Y. Sama halnya, S lebih besar dari K. Lihat program berikut.

Program 8.2 Mengilustrasikan aplikasi dari fungsi compare() pada string

#include <iostream>
#include <string>
using namespace std;

int main()
{
   string Str1, Str2, Str3, Str4 ;

   Str1 = "Jakarta";
   Str2 = "Bandung";

   Str3 = "Bandung";
   Str4 = "ZA";

   cout<<"Str1 = "<<Str1<<", Str2 = "<<Str2<<endl;
   cout<<"Str3 = "<<Str3<<", Str4 = "<<Str4<<endl;

   cout<<"Str1.compare(Str2) = "<<Str1.compare(Str2)<<endl;
   cout<<"Str2.compare(Str3) = "<<Str2.compare(Str3)<<endl;

   cout<<"Str4.compare(Str2) = "<<Str4.compare(Str2)<<endl;
   cout<<"Str3.compare(Str4) = "<<Str3.compare(Str4)<<endl;

   return 0;
}
KELUARAN
Str1 = Jakarta, Str2 = Bandung
Str3 = Bandung, Str4 = ZA
Str1.compare(Str2) = 1
Str2.compare(Str3) = 0
Str4.compare(Str2) = 1
Str3.compare(Str4) = -1

Dari ketiga string, ZA merupakan yang terbesar, karena Z lebih besar dari alfabet huruf besar lain. Sama halnya, Jakarta lebih besar dari Bandung, karena J lebih besar dari B.

TABEL 8.1 Sejumlah fungsi kelas string C++ dan penjelasannya
Fungsi
Penjelasan
append()
Fungsi ini dipakai untuk menempatkan sebuah substring di akhir dari string sekarang. Untuk lengkapnya, lihat program 8.3.
assign()
Fungsi ini menugaskan (i) sebuah string atau (ii) sejumlah tertentu karakter dari sebuah string atau (iii) sebuah substring kepada string sekarang. Untuk lengkapnya, lihat program 8.3.
at()
Fungsi ini menghasilkan referensi yang menunjuk ke sebuah elemen pada lokasi indeks. Lihat program 8.3 untuk ilustrasi.
begin()
Menghasilkan iterator yang menunjuk ke elemen pertama dari string. Lihat program 8.1 dan program 8.4.
C_str()
Menghasilkan sebuah pointer const yang menunjuk ke suatu string-C yang identik dengan string C++ sekarang. String-C diterminasi (diakhiri) dengan karakter Null.
capacity()
Menghasilkan jumlah elemen maksimum yang dapat ditampung oleh alokasi memori sekarang. Lihat program 8.3 untuk aplikasinya.
clear()
Fungsi ini menghapus semua elemen dari string.
compare()
Fungsi ini menghasilkan 1-, 0, dan 1 jika string yang sedang dibandingkan dengan string sekarang secara leskikografikal lebih besar dari, sama dengan, atau lebih kecil dari string sekarang. Lihat program 8.2 dan program 8.4.
copy()
Fungsi ini menyalin sejumlah tertentu karakter dari string sekarang. Untuk ilustrasi, lihat program 8.6.
data()
Fungsi ini menghasilkan sebuah pointer yang menunjuk ke elemen pertama dari string sekarang. Lihat program 8.6 untuk ilustrasi.
empty()
Fungsi ini menghasilkan true jika tida k ada elemen di dalam string. Menghasilkan false jika string kosong. Lihat program 8.1 dan program 8.4 untuk ilustrasi.
end()
Fungsi ini menghasilkan iterator yang menunjuk ke posisi tepat setelah akhir string. Lihat program 8.2 dan program 8.4 untuk ilustrasi.
erase()
Fungsi ini menghapus elemen-elemen tertentu dari string. Untuk ilustrasi, lihat program 8.4.
find()
Fungsi ini menghasilkan lokasi dari kemunculan pertama dari sebuah string/substring di dalam string sekarang. Lihat program 8.6 untuk ilustrasi.
find_first_not_of()
Fungsi ini menghasilkan indeks dari kemunculan pertama dari sebuah karakter yang tidak cocok dengan suatu karakter pada string yang diberikan.
find_first_of()
Fungsi ini menghasilkan indeks dari kemunculan pertama dari sebuah karakter yang cocok dengan suatu karakter pada string yang diberikan.
find_last_not_of()
Fungsi ini menghasilkan indeks dari kemunculan akhir dari sebuah karakter yang tidak cocok dengan suatu karakter pada string yang diberikan.
find_last_of()
Fungsi ini menghasilkan indeks dari kemunculan akhir dari sebuah karakter yang cocok dengan suatu karakter pada string yang diberikan.
getline()
Fungsi ini dipakai untuk membaca string-string dari aliran I/O.
insert()
Fungsi ini dipakai untuk menyisipkan karakter-karakter atau substring dengan pelbagai cara ke dalam string sekarang.
length()
Menghasilkan jumlah elemen di dalam string tanpa mencakup karakter Null.
max_size()
Menghasilkan jumlah elemen maksimum yang dapat ditampung di dalam memori yang teralokasi sekarang untuk string.
rbegin()
Fungsi ini menghasilkan sebuah iterator balik (reverse) yang menunjuk ke akhir string.
rend()
Fungsi ini menghasilkan sebuah iterator balik (reverse) yang menunjuk ke awal string.
replace()
Fungsi ini dipakai untuk mengganti elemen-elemen dengan sejumlah cara.
reserve()
Fungsi ini menetapkan kapasitas string menjadi ukuran minimum.
resize()
Fungsi ini mengubah ukuran string menjadi ukuran yang ditetapkan. Jika nilai dari elemen-elemen ditetapkan, maka elemen-elemen yang baru saja diciptakan akan diinisialisasi dengan nilai-nilai itu.
rfind()
Fungsi ini menhasilkan kemunculan pertama dari string di dalam string sekarang dengan melakukan pencarian mundur dari indeks yang diberikan.
size()
Fungsi ini menghasilkan jumlah elemen yang sekarang ada di dalam string. Lihat program 8.3 dan program 8.4 untuk aplikasinya.
substr()
Fungsi ini menghasilkan substring yang memuat sejumlah tertentu elemen (n) dari string string sekarang, yang diekstraksi dari lokasi tertentu. Lihat program 8.4.
swap()
Fungsi ini menukar elemen-elemen dari dua string.



8.4 Aplikasi dari Sejumlah Fungsi Kelas string
Aplikasi dari fungsi append(), assign(), at(), capacity(), dan size() diilustrasikan pada program berikut. Fungsi size() menghasilkan jumlah elemen aktual di dalam string, sedangkan fungsi capacity() menghasilkan jumlah elemen maksimum yang dapat ditampung di dalam alokasi memori terkini untuk string.

Program 8.3 Mengilustrasikan aplikasi dari fungsi append(), assign(), at(), capacity(), dan size()

#include<iostream>
#include<string>
using namespace std;

int main()
{
   string Str1, Str2, Str3 ;

   Str1 = "Selamat Datang!";
   Str2 = "Jika Anda ingin belajar C++,";
   Str3 = "Jika Anda ingin mendaftar ke lembaga pemrograman ini,";

   cout<<"Ukuran dari Str1 = "<<Str1.size ()<<endl;
   cout<<"Kapasitas dari Str1 = "<< Str1.capacity()<<endl;

   cout<<"Sebelum penempatan (di akhir string) \nStr1 ="<<Str1;
   cout<<"\nStr2 = " << Str2<<"\nStr3 = "<< Str3<<endl;

   Str2.append(Str1);      //Str1 ditempatkan di belakang Str2
   Str3.append (Str1);     //Str1 ditempatkan di belakang Str3

   cout<<"Setelah penempatan (di akhir string)\nStr2 = "<<Str2<<"\n"<<"Str3 = "<<Str3<<endl;

   Str1.assign (Str2);     //Str2 ditugaskan kepada Str1
   cout<<"Setelah penugasan \nStr1 = "<<Str1<<endl;

   cout<<"Elemen pada lokasi 5 dari Str2 adalah "<<Str2.at(5)<< endl;

   return 0 ;
}
KELUARAN
Ukuran dari Str1 = 15
Kapasitas dari Str1 = 31
Sebelum penempatan (di akhir string)
Str1 =Selamat Datang!
Str2 = Jika Anda ingin belajar C++,
Str3 = Jika Anda ingin mendaftar ke lembaga pemrograman ini,
Setelah penempatan (di akhir string)
Str2 = Jika Anda ingin belajar C++,Selamat Datang!
Str3 = Jika Anda ingin mendaftar ke lembaga pemrograman ini,Selamat Datang!
Setelah penugasan
Str1 = Jika Anda ingin belajar C++,Selamat Datang!
Elemen pada lokasi 5 dari Str2 adalah A

Keluaran menunjukkan perbedaan antara size() dan capacity(). Statemen Str1.size() menghasilkan jumlah elemen aktual di dalam Str1, yaitu 15, sedangkan kapasitasnya adalah untuk 31 elemen.

FUNGSI erase()
Fungsi ini dipakai untuk berikut:
a.        Untuk menghapus string secara menyeluruh. Kode diberikan berikut dan ilustrasinya diberikan pada program 8.4:

Str.erase();

b.       Untuk menghaspus sejumlah tertentu karakter, yang diawali dari lokasi tertentu. Sebagai contoh, Anda ingin menghapus 3 karakter dari string Str, yang diawali dari indeks 4. Kodenya diberikan berikut:

Str.erase(4, 3);

c.        Untuk menghapus semua karakter dari string Str, yang diawali dari sebuah posisi (katakanlah 10) sampai akhir string. Kodenya diberikan berikut:

Str.erase(10);

Program 8.4 Mengilustrasikan aplikasi dari fungsi substr(), begin(),end(),compare() dan erase()

#include <iostream>
#include <string>
using namespace std;

int main()
{
   string Str1, Str2, Str3 ;

   Str1 = "Selamat datang ke pertemuan ini";
   Str3 = "John Kristof";

   cout<<"ukuran dari Str1 = "<<Str1.size();
   cout<<"\nUkuran dari Str3 = "<<Str3.size();

   cout<<"\nStr1 awal = "<<Str1<<endl;
   cout<<"Str1.substr(4,11) = "<<Str1.substr(4,11)<<endl;

   Str2 = "Anda akan mempelajari C++" ;
   cout<<"Str2 = "<<Str2<<endl;

   string::iterator itr1 =Str2.begin(); //untuk iterator, lihat
   string::iterator itr2 = Str2.end();   //Bab 21

   Str2.erase(itr1+3, itr1+16);
   cout<<"Setelah Str2.erase (itr1+3, itr1+16) = "<<Str2<<endl;

   Str2.erase(4);
   cout<<"Setelah Str2.erase(4) = " <<Str2<<endl;

   Str2.erase();

   if (Str2.empty ())
      cout<<"Setelah Str2.erase(), Str2 menjadi kosong."<<endl;

   return 0;
}
KELUARAN
ukuran dari Str1 = 31
Ukuran dari Str3 = 12
Str1 awal = Selamat datang ke pertemuan ini
Str1.substr(4,11) = mat datang
Str2 = Anda akan mempelajari C++
Setelah Str2.erase (itr1+3, itr1+16) = Andajari C++
Setelah Str2.erase(4) = Anda
Setelah Str2.erase(), Str2 menjadi kosong.

Dua baris pertama pada keluaran memberikan ukuran dari string Str1 dan string Str2. Baris keempat pada keluaran memuat sebuah substring dari Str1 yang memuat 11 karakter mulai dari karakter ke-4. Pada baris berikutnya dari keluaran, efek dari penghapusan mulai dari elemen ke-4 sampai elemen ke-17 dari Str2 menghasilkan Andajari C++. Kemudian, hasilnya dihapus kembali mulai dari elemen keempat sampai akhir string, jadi hanya Anda yang tertinggal. Hasilnya sekali lagi dihapus menggunakan fungsi erase() yang menghapus string secara menyeluruh.



8.5 Operasi-Operasi Kelas string
Operator-operator berikut didukung oleh kelas string: =, ==, !=, <, >, <=, >=, +, <<, dan >>. Dimisalkan bahwa Anda memiliki tiga string S1, S2, dan S3 yang dideklarasikan berikut:

string S1 (“Selamat ”);
string S2 (“datang!”), S3;

Operator + dapat dipakai pada tipe-tipe fundamental (lihat program 8.5). Jadi, Anda dapat menuliskan:

S3 = S1 + S2;

Operator + menempatkan S1 di belakang S2 dan Anda mendapatkan:

S3 = “Selamat datang!”;

Sama halnya, Anda bisa menambahkan sebuah karakter pada suatu string. Jadi, dimisalkan string S diberikan sebagai

string S = “Ada”;

Operasi S + ‘t’ akan menambahkan t di akhir dari S. Setelah penjumlahan, didapatkan S = “Adat”.

FUNGSI getline()
Fungsi getline() untuk sebuah string dikode sebagai berikut:

string Str;
getline(cin, str) ;

Aplikasi dari fungs ini diilustrasikan pada program berikut. Program juga mengilustrasikan aplikasi dari sejumlah operator pada string.

Program 8.5 Mengilustrasikan aplikasi dari sejumlah operator pada string

#include <iostream>
#include <string>
using namespace std;

int main()
{
   string Str1(" SELAMAT DATANG!"), Str2("Kristof,") ;

   cout<<"Str1 = "<<Str1<<endl;
   string Str3;

   Str3= Str2 + Str1;
  
   cout<<"Str3 = "<< Str3 << endl;

   string S1 = "Ada";
   string S2 = "ointer";
   string S3 = "P";

   char ch = 't';

   string S4= S1 + ch;
   S2 = S3+S2;

   cout<<"S1 = "<<S1<<"\tS4 ="<<S4<<"\tS2 = "<<S2<<endl;

   string S5;
   cout<<"Semua dalam huruf kecil: \n";
   getline(cin, S5);
   cout<<"S5 = "<<S5<<endl;

   if (Str1> S5)
      cout<<"Str1 lebih besar dari S5."<<endl;
   else
      cout<<"Str5 lebih besar dari S1."<<endl;

   if (S1==Str1)
      cout<<"S1 dan Str1 sama."<<endl;
   else
      cout<<"S1 dan Str1 tidak sama."<<endl;

   if (S4>S1)
      cout<<"S4 lebih besar dari S1."<<endl;
   else
      cout<<"S1 lebih besar dari S4."<<endl;

   return 0;
}
KELUARAN
Str1 =  SELAMAT DATANG!
Str3 = Kristof, SELAMAT DATANG!
S1 = Ada        S4 =Adat        S2 = Pointer
Semua dalam huruf kecil:
saya belajar pemrograman c++.

S5 = saya belajar pemrograman c++.
Str5 lebih besar dari S1.
S1 dan Str1 tidak sama.
S4 lebih besar dari S1.


FUNGSI data(), find(), dan copy()
Kode Str.data() menghasilkan sebuah pointer yang menunjuk ke elemen pertama dari string Str. Fungsi find() menghasilkan posisi dari kemunculan pertama dari sebuah string/substring di dalam string sekarang. Fungsi copy() menghasilkan sebuah salinan dari sejumlah tertentu karakter dari sebuah string. Program berikut mengilustrasikan aplikasi dari ketiga fungsi berikut dengan fungsi compare() yang dipakai di dalam kondisi if.

Program 8.6 Mengilustrasikan aplikasi dari fungsi data(), find(), dan copy()

#include <iostream>
#include <string>
using namespace std;

int main()
{
   string Str1, Str2, Str3, Str4 ;

   Str1 = "Selamat datang untuk Anda!";

   Str2 = Str1;            //penugasan

   cout<<"Str2 = "<<Str2;

   Str3 = "Jika Anda ingin bergabung dengan kami,";
   cout<<Str3;

   cout<<"\ndata = "<<Str2.data();

   if ((Str1.compare(Str2)) ==0)
      cout<<"\nStr1 dan Str2 sama."<<endl;
   else
      cout<<"Str1 dan Str2 tidak sama." <<endl;

   cout<<"Di dalam Str1, substring tang ditemukan pada "<<Str1.find("tang")<<endl;

   char S[12];       // string-C atau array karakter
   memset(S,'\0',12) ;     //fungsi memset() mengisi 12 elemen dari array S
                                         //dengan karakter Null

   Str3.copy(S, 11); //menyalin 11 karakter pertama dari Str3
   cout<<"Jumlah karakter yang disalin = "<<Str3.copy(S, 11)<<endl;
   //menampilkan jumlah karakter yang disalin

   cout<<S<<endl;           //menampilkan string-C, yaitu S
   cout<<Str3<<endl; //menampilkan Str3

   return 0;
}
KELUARAN
Str2 = Selamat datang untuk Anda!Jika Anda ingin bergabung dengan kami,
data = Selamat datang untuk Anda!
Str1 dan Str2 sama.
Di dalam Str1, substring tang ditemukan pada 10
Jumlah karakter yang disalin = 11
Jika Anda i
Jika Anda ingin bergabung dengan kami,


FUNGSI find_first_not_of(), find_last_not_of(), find_first_of(), find_last_of(), dan replace()
Kode untuk fungsi find_first_not_of() untuk Str1 dan Str2 adalah:

Str2.find_first_not_of(Str1);

Nilai balik dari fungsi ini adalah nilai indeks dari elemen pertama dari Str2 yang bukan elemen dari Str1. Fungsi find_last_not_of()untuk Str1 dan Str2 adalah:

Str2.find_last_not_of(Str1);

Nilai balik dari fungsi ini adalah nilai indeks dari elemen terakhir dari Str2 yang bukan elemen dari Str1. Aplikasi dari kedua fungsi ini dan dua fungsi lain diilustrasikan pada program berikut.

Program 8.7 Mengilustrasikan aplikasi dari fungsi find_first_not_of(), find_last_not_of(), find_first_of(), find_last_of(), dan replace()

#include <iostream>
#include <string>
using namespace std;

int main()
{
   string Str1, Str2, Str3(6, 'B') ;

   Str1 = "SELAMAT DATANG!";
   Str2 = "Apakah Anda akan berangkat ke Siantar?";

   cout<<(Str2.find_first_not_of(Str1))<<endl;
   cout<<(Str2.find_last_not_of(Str1))<<endl;

   cout<<(Str2.find_first_of(Str1))<<endl;
   cout<<(Str2.find_last_of(Str1))<<endl;

   Str3.replace(1,5 ,"Jakarta");
   //mengganti 5 elemen Str3 diawali dari indeks 1

   cout<<"Sekarang Str3 = "<< Str3<<endl;

   return 0;
}
KELUARAN
1
37
0
30
Sekarang Str3 = BJakarta



8.6 Array yang Memuat String-String C++
Sebuah array yang memuat string-string dapat dideklarasikan sebagai:

string S[n];

Di sini, string adalah tipe (nama kelas), S adalah nama array, dan n adalah jumlah string yang ada di dalam array. Setiap elemen array diakses dengan nilai indeksnya di dalam array. Aplikasinya diilustrasikan pada program berikut.

Program 8.8 Mengilustrasikan array yang memuat string-string

#include <iostream>
#include <string>
using namespace std;

int main()
{
   string S1, S2[4], S3;
   string Nama[4] = {"John", "Kristof", "Vivian", "Robert"};

   for (int i =0; i < 4; i++)
      S2[i] = Nama[i];            //menugaskan elemen-elemen array kepada S2

   for(int k=0; k<4; k++)
      cout<<S2[k]<<" ";    //menampilkan elemen-elemen array S2

   S1 = " , Selamat mempelajari C++! ";
  
   string Psn[4];
   cout<<"\n";

   for(int j =0; j<4; j++)
   {
      Psn[j] = S2[j]. append (S1); //menempatkan S1 (di akhir) elemen-elemen dari S2
                                //dan menugaskan hasilnya kepada elemen-elemen dari Psn[]

         cout<<"Psn["<<j<<"] = "<<Psn[j]<<endl;
   }

   return 0;
}
KELUARAN
John Kristof Vivian Robert
Psn[0] = John , Selamat mempelajari C++!
Psn[1] = Kristof , Selamat mempelajari C++!
Psn[2] = Vivian , Selamat mempelajari C++!
Psn[3] = Robert , Selamat mempelajari C++!

LATIHAN
1.       Apakah perbedaan antara string-C dan string C++?
2.       Apakah string C++ memiliki karakter Null di akhir string itu?
3.       Apakah metode-metode untuk mengkonstruksi string C++?
4.       Apa sajakah operator yang dapat diterapkan pada string C++?
5.       Apakah string-C juga mendukung operator-operator yang didukung oleh string C++?
6.       Apakah perbedaan antara fungsi size() dan fungsi capacity()?
7.       Apakah aksi dari setiap fungsi string C++ berikut?
a.        append()
b.       assign()
c.        capacity()
d.       size()
e.        at()
8.       Apakah aksi dari setiap fungsi string C++ berikut?
a.        compare()
b.       copy()
c.        data()
d.       find()
e.        find_first_of()
f.        find_last_of()
9.       Tuliskan program untuk mengilustrasikan aksi dari tiap fungsi dari kelas string berikut:
a.        reserve()
b.       replace()
c.        max_size()
d.       getline()
e.        insert()
f.        length()
10.    Bagaimana Anda mengkonversi sebuah string C++ menjadi string-C ekivalennya?
11.    Tuliskan program untuk mengilustrasikan aksi dari tiap fungsi dari kelas string berikut:
a.        clear()
b.       resize()
c.        refind()
12.    Apakah yang Anda pahami tentang statemen berikut yang melibatkan fungsi erase(), dimana Str adalah nama string.
a.        Str.erase(4, 3);
b.       Str.erase(12);
c.        Str.erase();
13.    Tuliskan sebuah program untuk mengilustrasikan fungsi length() dan size().
14.    Apakah yang terjadi jika kode Str1.append(Str2); dieksekusi?
15.    Tuliskan sebuah program untuk mengilustrasikan aksi dari tiap operator berikut: ==, !=, dan = pada string.
Jawaban:

Program 8.9Mengilustrasikan aplikasi dari beberapa operator relasional pada string

#include <iostream>
#include<string>
using namespace std;

int main()
{
   string Str1 = "Hallo! Selamat Pagi!";
   string Str2 = "Begitu juga untuk Anda";
   string Str3 = "Mari belajar C++";

   if(Str3 !=Str2)
      cout<<"Str3 dan Str2 berbeda."<<endl;

   cout<<(Str1 == Str2 ? "True": "False" )<<"\n";
   cout<<"Sebelum penugasan\n Str1 = "<<Str1<<endl;
   cout<<" dan \n Str2 = "<<Str2<<endl;

   Str3 = Str2 = Str1;
   cout<<"Setelah penugasan"<<endl;
   cout<<" Str1= "<<Str1<<"\n Str2 = "<<Str2 <<"\n Str3 = " <<Str3 <<endl;

   return 0 ;
}
KELUARAN
Str3 dan Str2 berbeda.
False
Sebelum penugasan
 Str1 = Hallo! Selamat Pagi!
 dan
 Str2 = Begitu juga untuk Anda
Setelah penugasan
 Str1= Hallo! Selamat Pagi!
 Str2 = Hallo! Selamat Pagi!
 Str3 = Hallo! Selamat Pagi!




No comments: