Pada bahasa pemrograman C++, String memang tidak termasuk dalam tipe data dasar. Kita mungkin sudah sering menggunakan String, namun tidak sadar aja itu adalah string.
Pada bahasa pemrograman lain, kita mungkin mengenal String sebagai tipe data untuk teks. Tapi pada bahasa C++, String adalah sebuah array satu dimensi yang berisi kumpulan dari huruf atau karakter dan diakhiri dengan karakter kosong \0
(null).
Bahasa pemrograman C++ memang tidak memiliki tipe data string, tapi kita tetap bisa membuat string dengan tipe data char
.
Contoh :
char salam[6] = {'H', 'e', 'l', 'l', 'o', '\0'};
Seperti halnya tipe data lain, string dapat berupa konstanta atau variable. Konstanta string sudah biasa disertakan dalam program. Misalnya pada pernyataan berikut :
cout <<“C++”<<endl;
Terdapat konstanta string “C++”
Variable string adalah variable yang dipakai untuk menyimpan string, contoh :
char teks[15];
Merupakan pernyataan untuk mendefinisikan variable string dengan panjang maksimal 15 (sudah termasuk karakter NULL). Pernyataan diatas tidak lain adalah untuk mendefinisikan array bertipe karakter.
Dalam C++, string yang digunakan bertipe null terminate string, yaitu jenis string yang diakhiri oleh karakter null (‘\0’) bukan nol.
String adalah kumpulan (array) dari karakter (array of char), oleh karena itu jika kita akan mendeklarasikan variable bertipe string, maka kita harus melebihkan lebar sebanyak satu karakter untuk posisi karakter null (null character).
Contoh :
Hasilnya :
Memasukkan Data string dari keyboard
Pemasukkan data dapat ditangani oleh cin
Hasilnya :
- cin hanya membaca sebuah kata.
- cin hanya bisa membaca masukkan hingga terdapat spasi, tab, atau enter.
Contoh jika menggunakan cin, ketika memasukan kata Halo friend, maka yang akan terekam hanya kata Halo
Bagaimana cara agar spasi tetap dpt dibaca? Fungsi anggota get() pada objek cin (cin.get()) bisa dipakai untuk keperluan ini.
Contoh :
Hasilnya :
Argumen kedua yaitu 13, menyatakan jumlah maksimal karakter yg dapat diterima oleh teks(termasuk karakter NULL).
Bagaimana jika data yang dimasukkan lebih dari 13?
- Tampak bahwa hanya 12 karakter pertama yang disimpan pada teks, mengingat argumen kedua dari fungsi anggota get() diisi dengan 13 (Satu karakter lagi berisi karakter null).
- Pada contoh diatas cin.get(teks, 13); bisa juga ditulis menjadi cin.get(teks, sizeof(teks));
Fungsi anggota getline()
Suatu masalah akan timbul jika cin.get digunakan dua kali seperti pada program berikut :
Hasilnya :
- Ternyata program tsb tidak memberikan kesempatan pemakai untuk mengisi alamat. Hal ini terjadi karena get() yang pertama tidak membuang kode newline (\n).
- Oleh karena get() tidak tidak mengabaikan spasi putih (spasi, tab atau newline) maka get() kedua menjadi tidak berfungsi sebagaimana mestinya.
- Cara untuk mengatasi kejadian ini yaitu dengan menggunakan fungsi anggota getline(), karena fungsi ini dapat membuang sisa data yang tidak dibaca, temasuk newline itu sendiri. Pada contoh berikut, get() diganti dgn getline().
Contoh :
Hasilnya :
Fungsi-fungsi String
- Dalam C++ terdapat beberapa fungsi yang siap pakai yang berguna untuk menyelesaikan masalah-masalah yang berkaitan dengan string.
- Untuk menggunakan fungsi-fungsi tersebuit kita harus mendaftarkan file header string.h (untuk C++ lama) atau <cstring> (untuk C++ standar). Fungsi-fungsi string tersebut diantaranya strlen, strcpy,strncpy, strdup,strcat, strncat, strcmp, dll.
Contoh :
Hasilnya :
Fungsi strlen()
Panjang suatu string dapat diketahui dengan mudah menggunakan fungsi strlen(). Misalnya saja, didefinisikan:
char bunga[15]=“mawar”; int panjang;
maka pernyataan untuk mengetahui panjang string :
panjang=strlen(bunga);
akan memberikan panjang string yang tersimpan pada variable bunga ke panjang.
Contoh :
Hasilnya :
Fungsi strcpy()
Fungsi ini berguna untuk melakukan penyalinan string.
Fungsi strncpy()
Bentuk umum dari fungsi strncpy() adalah sebagai berikut :
char* strncpy(char* S1, const char* S2, size_t n);
Fungsi ini berguna untuk menyalin string sebanyak n karakter dari variable S2 ke variable S1.
Fungsi strcat()
Suatu String dapat digabungkan di akhir string lain dengan menggunakan strcat(). Sebagai contoh, terdapat inisialisasi sbb :
char st1[128] = “satu dua”; char st2[ ]=“tiga ”;
String yang ada pada st2 dpt ditambah ke akhir string st1 dgn cara berikut :
strcat(st1,st2);
Dengan adanya perintah di atas, isi st1 berubah menjadi:
“satu dua tiga”
Fungsi strcmp()
Perbadingan dua buah string dapat dilakukan dengan menggunakan fungsi strcmp(). Misalnya s1 dan s2 berupa variable string, maka untuk membandingkan keduanya :
strcmp(s1,s2);
akan memberikan nilai bertipe int berupa:
- Nilai negatif, apabila s1 < s2
- Nilai nol, jika s1 == s2
- Nilai positif, jika s1 > s2
Fungsii strcimp()
Selain strcmp, juga terdapat fungsi dengan kegunaan serupa yaitu strcimp(). Fungsi ini berguna untuk membandingkan dua buah string tanpa membedakan huruf besar ataupun huruf kapital, misal:
strcimp(“HALO”,”halo”);
Akan memberikan nilai balik berupa 0, yg menyatakan bahwa kedua string tersebut sama (mengingat huruf kapital dan huruf kecil dianggap sama).
Fungsi strncmp()
Berguna untuk untuk membandingkan dua buah string dan jumlah karakter yang dibandingkan maksimal sebanyak nilai argumen ketiga, misal :
strncmp(“Selamat Pagi”,”Selamat Siang”,7);
Akan memberikan nilai balik berupa 0, mengingat 7 karakter pertama pada kedua string adalah sama (yaitu “selamat”);
Fungsi strlwr()
Jika isi pada suatu string diinginkan untuk diubah kedalam huruf kecil, maka gunakan fungsi strlwr(), misal:
char kata[5]=“SMK”; strlwr(kata);
Maka kata akan berisi: “smk”
Fungsi strupr()
Fungsi strupr() berguna untuk mengonversi setiap huruf kecil dalam suatu string menjadi huruf kapital, misal:
char kata[ ]=“AbcDEfG”; strlupr(kata);
Maka kata akan berisi: “ABCDEFG”
Referensi :
- Budi Raharjo, Pemrograman C++, Informatika, 2006.
- Abdul Kadir, Pemrograman C++, Andi Yogyakarta, 2001.