STRING PADA C++
C++ menyediakan cara mudah, untuk menggunakan char*s untuk
hal strings. C++ kelas string ,bagian dari std namespace, membuatmu mudah
memanipulasi string(kata).
Deklarasi String mudah:
|
using namespace std;
string my_string;
|
atau
|
std::string my_string;
|
Kita juga langsung dapat memasukan nilai:
|
using namespace std;
string my_string("starting
value");
|
String I/O sangat mudah,dengan string yang didukung cin.
|
cin>>my_string;
|
Jika perlu membaca seluruh baris pada satu waktu, dapat menggunakan
fungsi getline dan pass dalam suatu objek input stream (seperti cin, untuk
membaca dari input standar, atau aliran yang berhubungan dengan file, membaca
dari sebuah file) , string, dan karakter yang untuk mengakhiri masukan. Kode
berikut membaca garis dari masukan standar (misalnya, keyboard) sampai baris
baru dimasukkan.
|
using namespace std;
getline(cin, my_string, '\n');
|
Rangkaian String
String juga dapat ditugaskan untuk satu sama lain atau
ditambahkan bersama-sama menggunakan operator +:
|
string my_string1 = "a
string";
string my_string2 = " is
this";
string my_string3 = my_string1
+ my_string2;
// Will ouput "a string is
this"
cout<<my_string3<<endl;
|
Tentu saja, + = operator juga didefinisikan! Rangkaian
string akan bekerja selama salah satu dari dua string adalah C ++ String --
yang lain dapat berupa string statis atau char *.
String Perbandingan
Salah satu bagian yang paling membingungkan menggunakan char
* s sebagai string adalah bahwa perbandingan yang rumit, memerlukan fungsi
perbandingan khusus, dan menggunakan tes seperti == atau <tidak berarti apa
yang Anda harapkan. Untungnya, untuk C ++ string, semua khas relasional
operator bekerja seperti yang diharapkan untuk membandingkan baik C ++ string
atau C ++ dan string baik string C atau string statis (yaitu, "satu dalam
tanda kutip").
Sebagai contoh, kode berikut tidak persis apa yang Anda
harapkan, yaitu menentukan apakah string input sama dengan string tetap:
|
string passwd;
getline(cin, passwd, '\n');
if(passwd == "xyzzy")
{
cout<<"Access allowed";
}
|
String Panjang dan Mengakses Individu
Elemen
Untuk mengambil panjang string, Anda dapat menggunakan
panjang atau ukuran fungsi, yang merupakan anggota dari kelas String, dan yang
mengembalikan jumlah karakter dalam string:
|
string my_string1 = "ten
chars.";
int len = my_string1.length();
// or .size();
|
String, seperti string C (char * s), dapat diindeks secara
numerik. Misalnya, Anda bisa beralih di atas semua karakter dalam string
mengindeks mereka dengan nomor, seolah-olah string adalah array.
Perhatikan bahwa penggunaan panjang () atau ukuran () fungsi
penting di sini karena string C ++ tidak dijamin akan null-dihentikan (oleh '\
0'). (Bahkan, Anda harus dapat menyimpan byte dengan nilai 0 dalam C ++ string
dengan tanpa efek samping. Dalam string C, ini akan mengakhiri string!)
|
int i;
for(i = 0; i <
my_string.length(); i++)
{
cout<<my_string[i];
}
|
Di sisi lain, string sebenarnya adalah rangkaian, sama
seperti wadah STL lainnya, sehingga Anda dapat menggunakan iterator untuk
beralih di atas isi dari string.
|
string::iterator my_iter;
for(my_iter =
my_string.begin(); my_iter != my_string.end(); my_iter++)
{
cout<<*my_iter;
}
|
Perhatikan bahwa my_string.end () berada di luar akhir
string, sehingga kita tidak ingin mencetaknya, sedangkan my_string.begin ()
adalah pada karakter pertama dari string.
Kebetulan, C ++ String iterator mudah diremehkan oleh
operasi yang mengubah string, jadi waspadalah saat menggunakan setelah
memanggil fungsi string yang dapat mengubah
String pencarian dan Substring
Kelas String mendukung pencarian dan pengambilan substring
sederhana dengan menggunakan fungsi find (), rfind (), dan substr (). Fungsi
anggota find mengambil string dan posisi dan mulai mencari string dari posisi
yang diberikan untuk kejadian pertama dari string yang diberikan. Ia
mengembalikan posisi kejadian pertama string, atau nilai khusus, String ::
npos, yang menunjukkan bahwa hal itu tidak menemukan substring.
Ini adalah apa fungsi prototipe find akan terlihat seperti.
(Perhatikan bahwa saya telah menggunakan int di sini untuk kejelasan, tetapi
mereka akan benar-benar menjadi tipe "size_type", yang unsigned.)
|
int find(string pattern, int
position);
|
Contoh kode ini mencari setiap contoh string "cat"
dalam string tertentu dan menghitung jumlah total kasus:
|
string input;
int i = 0;
int cat_appearances = 0;
getline(cin, input, '\n');
for(i =
input.find("cat", 0); i != string::npos; i =
input.find("cat", i))
{
cat_appearances++;
i++;
// Move past the last discovered instance to avoid finding same
// string
}
cout<<cat_appearances;
|
Demikian pula, akan ada kemungkinan untuk menggunakan rfind
di hampir dengan cara yang sama, kecuali pencarian yang akan dimulai di akhir
string, bukan awal. (String pertandingan masih akan dari kiri ke kanan - yaitu,
tidak akan cocok "Cat" dengan string yang berisi "tac".)
Bagaimana Anda perlu mengubah program di atas untuk menggunakan rfind?
Di sisi lain, fungsi substr dapat digunakan untuk membuat
string baru hanya terdiri dari sepotong string dimulai pada posisi tertentu dan
panjang tertentu:
|
// sample prototype
string substr(int position, int
length);
|
Sebagai contoh, untuk mengekstrak pertama sepuluh karakter
dari string, Anda dapat menggunakan
|
string my_string =
"abcdefghijklmnop";
string first_ten_of_alphabet =
my_string.substr(0, 10);
cout<<"The first ten
letters of the alphabet are "
<<first_ten_of_alphabet;
|
Memodifikasi String melalui
Penyambungan atau Erasure
Ini juga mungkin untuk memodifikasi string C ++ baik
menghapus bagian dari string atau menambahkan teks baru. Dengan menghapus ()
fungsi terlihat sangat mirip dengan substr di prootype nya; dibutuhkan posisi
dan jumlah karakter dan menghapus banyak karakter mulai dari posisi tertentu.
Perhatikan posisi itu nol-diindeks, seperti biasa.
|
string my_removal =
"remove aaa";
my_removal.erase(7, 3); //
erases aaa
|
Untuk menghapus keseluruhan string bisa menggunakan
|
str.erase(0, str.length());
|
Di sisi lain, Anda juga dapat menyambung satu string menjadi
lain. Fungsi anggota insert mengambil posisi dan string dan memasukkan string yang
dimulai dari posisi yang diberikan:
|
string my_string =
"ade";
my_string.insert(1,
"bc");
// my_string is now
"abcde"
cout<<my_string<<endl;
|
Rangkaian String dapat diimplementasikan dalam hal
memasukkan, menggunakan posisi melewati elemen terakhir dari string sebagai
titik penyisipan (yaitu, str.length ()). Mencoba untuk memasukkan di luar
panjang string akan menghasilkan kesalahan segmentasi.
Makasih Infonya
BalasHapusMy Blog
Makasih Infonya
BalasHapusMy Blog
Wah Makasih Infonya.
BalasHapusJangan lupa berkunjung ya, sarjana-pedia.blogspot.com
Terimakasih berguna bgt
BalasHapus