Kelas dan Objek
Kelas adalah sekumpulan pemboleh ubah dan fungsi yang berfungsi bersama; di mana pemboleh ubah tidak mempunyai nilai yang ditetapkan. Apabila nilai diberikan kepada pemboleh ubah, kelas menjadi objek. Nilai yang berbeza yang diberikan kepada kelas yang sama menghasilkan objek yang berbeza; iaitu, objek yang berbeza adalah kelas yang sama dengan nilai yang berbeza. Membuat objek dari kelas dikatakan sebagai objek.
Nama, rentetan, adalah kelas. Objek yang dibuat dari kelas rentetan mempunyai nama programmer yang dipilih.
Fungsi yang termasuk dalam kelas diperlukan untuk memberi contoh objek dari kelas. Dalam C ++, fungsi itu mempunyai nama yang sama dengan nama kelas. Objek yang dibuat (disusun) dari kelas mempunyai nama yang berbeza yang diberikan kepada mereka, oleh pengaturcara.
Membuat objek dari kelas bermaksud membina objek; ia juga bermaksud memberi contoh.
Program C ++ yang menggunakan kelas rentetan, bermula dengan baris berikut di bahagian atas fail:
#sertakan#sertakan
menggunakan namespace std;
Baris pertama adalah untuk input / output. Baris kedua adalah membenarkan program menggunakan semua ciri kelas rentetan. Baris ketiga membolehkan program menggunakan nama di ruang nama standard.
Melebihi Fungsi
Apabila dua atau lebih tandatangan fungsi yang berbeza mempunyai nama yang sama, nama itu dikatakan berlebihan. Apabila satu fungsi dipanggil, jumlah dan jenis argumen, tentukan fungsi mana yang dijalankan.
Pembinaan
tali()
Pernyataan berikut membina rentetan panjang sifar tanpa watak.
Ia bermula dengan nama kelas (jenis objek), rentetan. Ini diikuti oleh nama untuk string objek, yang diberikan oleh pengaturcara. Pengendali tugasan mengikuti; maka nama pembina dengan tanda kurung kosong. Di sini, strCol adalah objek instantiated dengan semua anggota data (sifat) dan fungsi anggota (kaedah).
tali (str)
Ini serupa dengan perkara di atas, tetapi mengambil string literal atau pengecam sebagai argumen, dalam konstruktor. Pernyataan berikut menggambarkan ini:
Pembinaan dengan Initializer List
Kod berikut menggambarkan ini:
tali strCol=tali({'Saya','','yang','atau','v','Dan','','dan','atau',awak,' 0'});String literal adalah saya sayang awak. Perhatikan watak nul di akhir senarai pemula.
rentetan (str, n)
Ini membentuk koleksi rentetan, dari watak n pertama rentetan lain. Kod berikut menggambarkan ini:
charhlm[] = 'Saya sayang awak';tali strCol=tali(hlm, 6);
kos<<strCol<< ' n';
Keluarannya saya suka dengan 6 watak pertama dari I love you. Ingat: ruang tunggal adalah watak.
rentetan (str, pos, n)
Ini membentuk kumpulan rentetan dari n karakter, bermula dari kedudukan terindeks berasaskan sifar, pos, dari rentetan lain. Kod berikut menggambarkan ini:
charhlm[] = 'Saya sayang awak';tali strCol=tali(hlm, 2, 4);
kos<<strCol<< ' n';
Hasilnya adalah, cinta.
Untuk dua kes di atas, jika n lebih besar daripada ukuran tali, pengecualian out_of_range dilemparkan - lihat kemudian.
rentetan (n, ‘c’)
Membentuk kumpulan watak n, di mana semua wataknya sama. Pertimbangkan,
tali strCol=tali(5,'Dan');kos<<strCol<< ' n';
Keluarannya adalah, eeeee, 5 e.
Memberi Tali
String dapat diberikan sebagai berikut, setelah menyatakan kedua string:
tali strCol1=tali('Saya sayang awak');tali strCol2;
strCol2=strCol1;
kos<<strCol2<< ' n';
Hasilnya, saya sayang awak.
Membina dengan Iterator
Iterator memberikan gambaran umum pengimbasan, melalui nilai-nilai koleksi. Sintaks untuk membuat rentetan dengan iterator, adalah:
templat<kelas InputIterator>tali asas(InputIterator bermula,Akhir InputIterator, penyambungPeruntukkan&
ke=Peruntukkan());
Ini membina rentetan untuk julat [mula, berakhir] - lihat butiran kemudian.
Menghancurkan Rentetan
Untuk menghancurkan rentetan, biarkan ia keluar dari ruang lingkup.
Akses Elemen Kelas Rentetan
Objek rentetan boleh dibuat sub-skrip (diindeks) seperti array. Pengiraan indeks bermula dari sifar.
stringNama [i]
StringName operasi [i] mengembalikan rujukan kepada watak (elemen) di iikaindeks koleksi watak. Kod berikut mengeluarkan v:
tali strCol=tali('Saya sayang awak');charch=strCol[4];
kos<<ch<< ' n';
stringName [i] konst
Operasi stringName [i] const dijalankan dan bukannya stringName [i] apabila objek rentetan adalah objek tetap. Ia digunakan dalam kod berikut sebagai contoh:
penyambungtali strCol=tali('Saya sayang awak');charch=strCol[4];
kos<<ch<< ' n';
Ungkapan mengembalikan rujukan tetap ke iikaunsur objek rentetan. Tiada unsur rentetan yang dapat diubah.
Menetapkan Watak dengan Langganan
Karakter dapat diberikan ke objek rentetan tidak tetap, seperti berikut:
tali strCol=tali('Saya panggil');strCol[2] = 'f';
kos<<strCol<< ' n';
Keluarannya saya jatuh. ‘C’ diubah menjadi ‘f’.
stringName.at (i)
stringName.at (i) serupa dengan stringName [i], tetapi stringName.at (i) lebih dipercayai. Kod berikut menunjukkan cara penggunaannya:
tali strCol=tali('Saya sayang awak');charch=strCol.di(4);
kos<<ch<< ' n';
di () sebenarnya adalah fungsi anggota kelas rentetan.
stringName.at (i) konst
stringName.at (i) const serupa dengan stringName [i] const, tetapi stringName.at (i) const lebih dipercayai. stringName.at (i) const dijalankan dan bukannya stringName.at (i) apabila objek rentetan adalah objek rentas malar. Ia digunakan dalam kod berikut, misalnya:
penyambungtali strCol=tali('Saya sayang awak');charch=strCol.di(4);
kos<<ch<< ' n';
at () const sebenarnya adalah fungsi anggota kelas rentetan.
Menetapkan Nilai dengan Fungsi ()
Nilai dapat diberikan ke objek rentetan tidak tetap, dengan fungsi at (), seperti berikut:
tali strCol=tali('Saya panggil');strCol.di(2) = 'f';
kos<<strCol<< ' n';
Keluarannya saya jatuh.
Masalah dengan Sub-skrip
Masalah dengan sub-skrip (pengindeksan) adalah, jika indeks berada di luar jangkauan, hasil yang salah dapat diperoleh, atau kesalahan dapat dikeluarkan pada waktu berjalan.
depan ()
Ini mengembalikan rujukan ke elemen pertama objek rentetan, tanpa membuang elemen tersebut. Keluaran kod berikut adalah ‘I’.
tali strCol=tali('Saya sayang awak');charch=strCol.depan();
kos<<ch<< ' n';
Karakter tidak dikeluarkan dari objek rentetan.
depan () konst
Apabila pembinaan objek rentetan didahului oleh const, ekspresi depan () const dijalankan bukan depan (). Contohnya digunakan dalam kod berikut.
penyambungtali strCol=tali('Saya sayang awak');charch=strCol.depan();
kos<<ch<< ' n';
Rujukan tetap dikembalikan. Elemen tidak dikeluarkan dari objek rentetan. Tidak ada watak yang dapat diubah untuk objek rentetan malar.
belakang ()
Ini mengembalikan rujukan ke elemen terakhir objek rentetan, tanpa membuang elemen tersebut. Keluaran kod berikut adalah ‘u’.
tali strCol=tali('Saya sayang awak');charch=strCol.belakang();
kos<<ch<< ' n';
belakang () konst
Apabila pembinaan objek rentetan didahului oleh const, ekspresi kembali () const dijalankan dan bukannya belakang (). Contohnya digunakan dalam kod berikut.
penyambungtali strCol=tali('Saya sayang awak');charch=strCol.belakang();
kos<<ch<< ' n';
Rujukan tetap dikembalikan. Elemen tidak dikeluarkan dari objek rentetan.
Kapasiti tali
size_type kapasiti () const kecuali
Jumlah watak yang dapat ditampung oleh rentetan tanpa memerlukan penempatan semula, dikembalikan oleh fungsi anggota kapasiti ini. Segmen kod untuk ini adalah:
tali strCol=tali();intpada satu=strCol.kapasiti();
kos<<pada satu<< ' n';
Keluarannya adalah 15 pada komputer saya.
rizab (n)
Ruang memori tidak selalu tersedia di kedai percuma. Ruang tambahan boleh ditempah terlebih dahulu. Pertimbangkan segmen kod berikut:
tali strCol=tali('cinta');strCol.rizab(6);
kos<<strCol.kapasiti() << ' n';
Keluarannya adalah 15 pada komputer saya.
saiz () const kecuali
Ini mengembalikan bilangan watak dalam rentetan. Kod berikut menggambarkan:
tali strCol=tali('Saya sayang awak');intpada satu=strCol.ukuran();
kos<<pada satu<< ' n';
Keluarannya adalah 10, yang tidak termasuk watak nul, 0.
panjang () const kecuali
-sama dengan ukuran().Catatan:ukuran() <=kapasiti().
shrink_to_fit ()
Dapat mengurangkan kapasiti () ke ukuran () dengan menyebabkan pengagihan semula; itu tidak wajib. Kod berikut menunjukkan ini:
tali strCol=tali('Saya sayang awak');strCol.rizab(12);
strCol.mengecilkan_keperluan();
ints=strCol.ukuran();
kos<<s<< ' n';
Keluarannya adalah 10 dan bukan 12 atau 16. Fungsi kembali tidak sah.
ubah saiz (sz), ubah saiz (sz, 'c')
Ini mengubah saiz rentetan. Sekiranya ukuran baru lebih kecil daripada ukuran lama, maka elemen ke hujungnya akan terhapus. Sekiranya ukuran baru lebih panjang, maka beberapa watak lalai ditambahkan hingga akhir. Untuk menambahkan watak tertentu, gunakan fungsi ubah ukuran () dengan dua argumen. Segmen kod berikut menggambarkan penggunaan dua fungsi:
tali strCol=tali('Saya sayang awak');strCol.ubah saiz(6);
kos<< 'Ukuran baru strCol:' <<strCol.ukuran() << ' n';
tali strCol1=tali('Saya cinta', 'Dan');
strCol1.ubah saiz(12);
kos<< 'Ukuran baru strCol1:' <<strCol1.ukuran() << ' n';
Keluarannya adalah:
Saiz strCol baru: 6Saiz baru strCol1: 12
Fungsi kembali tidak sah.
jelas () tidak terkecuali
Mengeluarkan semua elemen dari rentetan, seperti yang ditunjukkan oleh segmen kod berikut:
tali strCol=tali('Saya sayang awak');strCol.jelas();
kos<<strCol.ukuran() << ' n';
Keluarannya adalah 0. Fungsi kembali tidak sah.
kosong () const kecuali
Ini mengembalikan 1 untuk true jika tidak ada watak dalam objek rentetan, atau 0 untuk false jika objek rentetan tidak kosong. Kod berikut menggambarkan ini:
tali strCol1=tali('Saya sayang awak');kos<<strCol1.kosong() << ' n';
tali strCol2=tali();
kos<<strCol2.kosong() << ' n';
Keluarannya adalah:
01
Kembali Iterator dan Kelas Rentetan
Iterator adalah seperti penunjuk tetapi mempunyai lebih banyak fungsi daripada penunjuk.
mulakan () kecuali
Mengembalikan iterator yang menunjukkan watak pertama (elemen) objek rentetan, seperti pada segmen kod berikut:
tali strCol=tali('Saya sayang awak');tali asas<char> ::iteratoriter=strCol.bermula();
kos<< *iter<< ' n';
Keluarannya adalah 'I'. Perhatikan cara deklarasi yang menerima iterator, telah diisytiharkan. Iterator diredferensikan dalam ungkapan pengembalian untuk mendapatkan nilai, dengan cara yang sama, bahawa penunjuk tidak dihormati.
bermula () const kecuali;
Mengembalikan iterator yang menunjukkan elemen pertama koleksi objek rentetan. Apabila pembinaan objek didahului oleh const, ekspresi mula () const dijalankan dan bukannya mula (). Dalam keadaan ini, elemen yang sesuai dalam objek tidak dapat diubah. Contohnya digunakan dalam kod berikut.
penyambungtali strCol=tali('Saya sayang awak');tali asas<char> ::const_iteratoriter=strCol.bermula();
kos<< *iter<< ' n';
Keluarannya adalah 'I'. Perhatikan bahawa const_iterator telah digunakan kali ini, bukan hanya iterator, untuk menerima iterator yang dikembalikan.
akhir () kecuali
Mengembalikan iterator yang menunjukkan tepat di luar elemen terakhir objek rentetan. Pertimbangkan segmen kod berikut:
tali strCol=tali('Saya sayang awak');tali asas<char> ::iteratoriter=strCol.akhir();
kos<< *iter<< ' n';
Keluarannya adalah nol, yang tidak ada apa-apa, kerana tidak ada unsur konkrit melebihi elemen terakhir.
akhir () const kecuali
Mengembalikan iterator yang menunjukkan tepat di luar elemen terakhir objek rentetan. Apabila pembinaan objek rentetan didahului oleh const, ujung ekspresi () const dijalankan dan bukannya akhir (). Pertimbangkan segmen kod berikut:
penyambungtali strCol=tali('Saya sayang awak');tali asas<char> ::const_iteratoriter=strCol.akhir();
kos<< *iter<< ' n';
Hasilnya adalah sifar. Perhatikan bahawa const_iterator telah digunakan kali ini, bukan hanya iterator, untuk menerima iterator yang dikembalikan.
Pengulangan Berbalik
Ada kemungkinan untuk mempunyai iterator yang berulang dari akhir sebenar sebelum elemen pertama:
rbegin () kecuali
Mengembalikan iterator yang menunjuk ke elemen terakhir dari objek yang diatur rentetan, seperti pada segmen kod berikut:
tali strCol=tali('Saya sayang awak');tali asas<char> ::pembalik_iteratoriter=strCol.rbegin();
kos<< *iter<< ' n';
Keluarannya adalah ‘u’. Perhatikan cara deklarasi yang menerima iterator terbalik, telah diisytiharkan. Iterator diredferensikan dalam ungkapan pengembalian untuk mendapatkan nilai, dengan cara yang sama, bahawa penunjuk tidak dihormati.
rbegin () const kecuali;
Mengembalikan iterator yang menunjukkan elemen terakhir objek rentetan. Apabila pembinaan objek didahului oleh const, ekspresi rbegin () const dijalankan bukan rbegin (). Dalam keadaan ini, elemen yang sesuai dalam objek tidak dapat diubah. Ciri ini digunakan dalam kod berikut, misalnya.
penyambungtali strCol=tali('Saya sayang awak');tali asas<char> ::const_reverse_iteratoriter=strCol.rbegin();
kos<< *iter<< ' n';
Keluarannya adalah ‘u’. Perhatikan bahawa const_reverse_iterator telah digunakan pada masa ini, bukan hanya_balik_iterator, untuk menerima iterator yang dikembalikan.
tidak (kecuali)
Mengembalikan iterator yang menunjuk tepat sebelum elemen pertama objek rentetan. Pertimbangkan segmen kod berikut:
tali strCol=tali('Saya sayang awak');tali asas<char> ::pembalik_iteratoriter=strCol.membuat();
kos<< *iter<< ' n';
Keluarannya adalah nol, yang tidak ada apa-apa, kerana tidak ada unsur konkrit sebelum elemen pertama.
render () const kecuali
Mengembalikan iterator yang menunjuk tepat sebelum elemen pertama objek rentetan. Apabila pembinaan objek didahului oleh const, ekspresi rend () const dijalankan bukan rend (). Pertimbangkan segmen kod berikut:
penyambungtali strCol=tali('Saya sayang awak');tali asas<char> ::const_reverse_iteratoriter=strCol.membuat();
kos<< *iter<< ' n';
Hasilnya adalah sifar. Perhatikan bahawa const_reverse_iterator telah digunakan pada masa ini, bukan hanya_balik_iterator, untuk menerima iterator yang dikembalikan.
Pengubah String
Pengubah yang mengubah objek rentetan, juga dapat mengambil atau mengembalikan iterator.
Menambah
tali asas&pengendali+ =(penyambungtali asas&hlm)Menambah objek rentetan kanan ke objek rentetan kiri. Contoh:
tali strCol1=tali('Saya cinta');tali strCol2=tali('awak');
strCol1+ =strCol2;
kos<<strCol1<< ' n';
Hasilnya adalah saya sayang awak. Jangan lupa bahawa strCol1 + = strCol2 sama dengan strCol1 = strCol1 + strCol2.
basic_string & operator + = (const charT * s)
Menambah literal string ke koleksi objek rentetan. Contoh:
tali strCol=tali('Saya cinta');strCol+ = 'awak';
kos<<strCol<< ' n';
Keluaran: Saya sayang awak.
basic_string & operator + = (charT c)
Menambah watak tunggal ke rentetan objek. Contoh:
tali strCol=tali('Saya cinta yo');strCol+ = awak;
kos<<strCol<< ' n';
Keluaran: Saya sayang awak.
basic_string & operator + = (senarai_inisialisasi)
Menambah senarai pemula. Contoh:
tali strCol=tali('Saya cinta');strCol+ = {'','dan','atau',awak,' 0'};
kos<<strCol<< ' n';
Keluaran: Saya sayang awak. Adalah baik untuk menambahkan nul, 0 di akhir senarai pemula watak.
basic_string & append (const basic_string & str)
Menambah objek rentetan argumen ke objek rentetan utama. Contoh:
tali strCol1=tali('Saya cinta');tali strCol2=tali('awak');
strCol1.tambahkan(strCol2);
kos<<strCol1<< ' n';
Keluaran: Saya sayang awak.
basic_string & append (const charT * s)
Menambah argumen literal string ke rentetan utama. Contohnya
tali strCol=tali('Saya cinta');strCol=strCol.tambahkan('awak');
kos<<strCol<< ' n';
Keluaran: Saya sayang awak.
basic_string & append (senarai_inisialisasi)
Menambah senarai inisialisasi, yang merupakan argumen, ke rentetan utama. Contoh:
tali strCol=tali('Saya cinta');strCol=strCol.tambahkan({'','dan','atau',awak,' 0'});
kos<<strCol<< ' n';
Keluaran: Saya sayang awak. Adalah baik untuk menambahkan watak nul, 0 di akhir senarai pemula.
basic_string & append (size_type n, charT c)
Menambah n dengan watak yang sama. Contoh:
tali strCol=tali('tab');strCol=strCol.tambahkan(2, 'atau');
kos<<strCol<< ' n';
Keluaran: pantang larang.
basic_string & append (const charT * s, size_type n)
Menambah unsur-unsur n pertama dari literal ke objek rentetan utama. Contoh:
tali strCol=tali('Saya cinta');strCol=strCol.tambahkan(' awak sangat', 4);
kos<<strCol<< ' n';
Hasilnya adalah: Saya sayang awak. Sekiranya n lebih besar daripada panjang literal, pengecualian long_error dilemparkan.
basic_string & append (const basic_string & str, size_type pos, size_type n = npos)
Menambah n watak dari indeks, pos ke rentetan utama. Contoh:
tali strCol=tali('Saya cinta');strCol=strCol.tambahkan(sudah begitu ', 2, 4);
kos<<strCol<< ' n';
Keluaran: Saya sayang awak. Pengecualian juga akan dilemparkan di sini, lihat kemudian.
Menugaskan
tali asas&memberi(penyambungtali asas&hlm)Menetapkan objek rentetan argumen ke rentetan utama, menggantikan kandungan yang ada di sana.
tali strCol1=tali('Saya sayang awak');tali strCol2=tali('Dia memerlukan saya');
strCol1=strCol1.memberi(strCol2);
kos<<strCol1<< ' n';
Keluaran: Dia memerlukan saya.
tali asas&memberi(penyambungamal*s)Menetapkan argumen literal string ke rentetan utama, menggantikan kandungan yang ada di sana.
tali strCol=tali('Saya sayang awak');strCol=strCol.memberi('Dia memerlukan saya');
kos<<strCol<< ' n';
Keluaran: Dia memerlukan saya.
tali asas&memberi(senarai awal<amal>)Menetapkan argumen senarai pemula ke rentetan utama,menggantikan sebarang kandungan yang ada di sana.
[cc lang='c'melarikan diri='benar'lebar='780']
tali strCol=tali('Saya sayang awak');
strCol=strCol.memberi({'S','h','Dan','','n','Dan','Dan','d','','','m','Dan',' 0'});
kos<<strCol<< ' n';
Keluaran: Dia memerlukan saya. Adalah baik untuk selalu menambahkan nul, 0 di akhir senarai watak, untuk membentuk rentetan literal.
tali asas&memberi(penyambungamal*s,saiz_jenis n)Menetapkan watak n pertama argumen literal rentetan ke rentetan utama, menggantikan kandungan yang ada di sana.
tali strCol=tali('Saya sayang awak');strCol=strCol.memberi('Dia memerlukan saya', 9);
kos<<strCol<< ' n';
Keluaran: Dia memerlukan.
tali asas&memberi(saiz_jenis n,akta c)Menetapkan argumen n watak yang sama dengan rentetan utama, menggantikan kandungan yang ada di sana.
tali strCol=tali('Saya sayang awak');strCol=strCol.memberi(4, 'Dan');
kos<<strCol<< ' n';
Keluaran: eeee
tali asas&memberi(penyambungtali asas&hlm,size_type pos,saiz_jenis n=npos)
Menugaskan n watak argumen objek rentetan, bermula dari pos, ke rentetan utama, menggantikan kandungan yang ada di sana.
tali strCol=tali('Saya sayang awak');strCol=strCol.memberi('Dia memerlukan saya', 4, 5);
kos<<strCol<< ' n';
Keluaran: keperluan. Akan membuang pengecualian - lihat kemudian.
Memasukkan
tali asas&masukkan(size_type pos, penyambungtali asas&hlm)Memasukkan argumen objek rentetan ke rentetan utama, pada indeks, pos.
tali strCol1=tali('Saya sayang awak');tali strCol2=tali('benci dan');
strCol1=strCol1.masukkan(2,strCol2);
kos<<strCol1<< ' n';
Keluaran: Saya benci dan sayangkan awak. Akan membuang pengecualian - lihat kemudian.
tali asas&masukkan(size_type pos1, penyambungtali asas&hlm,size_type pos2,saiz_jenis n=npos)
Memasukkan panjang watak n dari pos2 argumen objek rentetan, ke rentetan utama, pada indeks, pos1.
tali strCol1=tali('Saya sayang awak');tali strCol2=tali('benci, mahu dan perlukan');
strCol1=strCol1.masukkan(2,strCol2, 6, 9);
kos<<strCol1<< ' n';
Keluaran: Saya mahu dan mencintaimu.
sisipan iterator (const_iterator p, charT c)
Memasukkan watak tertentu, yang merupakan argumen, ke dalam kedudukan yang ditunjukkan oleh iterator. Mengembalikan iterator untuk kedudukan watak yang baru dimasukkan.
tali strCol=tali('Saya sayang awak');tali asas<char> ::iteratoriter=strCol.bermula();
++iter; ++iter; ++iter; ++iter; ++iter; ++iter;
tali asas<char> ::iteratorrangkaian=strCol.masukkan(iter, 'd');
kos<< *rangkaian<< ' n';
kos<<strCol<< ' n';
Keluarannya adalah:
‘D’
Saya sayang awak
sisipan iterator (const_iterator p, size_type n, charT c)
Memasukkan n watak yang sama argumen, ke dalam kedudukan, yang ditunjukkan oleh iterator. Mengembalikan iterator untuk kedudukan permulaan watak yang sama yang baru dimasukkan.
tali strCol=tali('Tab di tanah.');tali asas<char> ::iteratoriter=strCol.bermula();
++iter; ++iter; ++iter;
tali asas<char> ::iteratorrangkaian=strCol.masukkan(iter, 2, 'atau');
kos<< *rangkaian<< ' n';
kos<<strCol<< ' n';
Keluarannya adalah:
'atau'
Tabu di tanah.
tali asas&masukkan(size_type pos, penyambungamal*s)Menyisipkan string argumen literal pada indeks, pos dalam rentetan utama.
tali strCol=tali('Tab di tanah.');strCol=strCol.masukkan(3, 'oo');
kos<<strCol<< ' n';
Keluaran: Tabu di tanah.
tali asas&masukkan(size_type pos, penyambungamal*s,saiz_jenis n)Memasukkan watak n pertama dari string argumen literal, pada indeks, pos dalam rentetan utama.
tali strCol=tali('Tab di tanah.');strCol=strCol.masukkan(3, 'oooo', 2);
kos<<strCol<< ' n';
Keluaran: Tabu di tanah.
Mengganti
tali asas&ganti(size_type pos1,size_type n1, penyambungtali asas&hlm))Menggantikan watak n1 dalam objek rentetan utama dari indeks, pos1, dengan objek rentetan argumen.
tali strCol1=tali('Saya sayang awak');tali strCol2=tali('benci kamu dan');
strCol1=strCol1.ganti(2, 4,strCol2);
kos<<strCol1<< ' n';
Keluaran: Saya benci awak dan awak. Akan membuang pengecualian - lihat kemudian.
tali asas&ganti(size_type pos1,size_type n1, penyambungtali asas&hlm,size_type pos2,size_type n2=npos)
Menggantikan watak n1 dalam objek rentetan utama dari indeks, pos1, dengan watak n2 objek rentetan argumen dari indeks, pos2.
tali strCol1=tali('Saya sayang awak');tali strCol2=tali('kita benci dia dan dia');
strCol1=strCol1.ganti(2, 4,strCol2, 3, 12);
kos<<strCol1<< ' n';
Keluaran: Saya benci dia dan awak.
tali asas&ganti(size_type pos1,size_type n1, penyambungamal*s,size_type n2)
Menggantikan watak n1 dalam objek rentetan utama dari indeks, pos1, dengan watak n2 pertama dari argumen rentetan literal.
tali strCol1=tali('Saya sayang awak');strCol1=strCol1.ganti(2, 4, 'benci dia dan dia', 12);
kos<<strCol1<< ' n';
Keluaran: Saya benci dia dan awak.
basic_string & ganti (size_type pos, size_type n, const charT * s)
Menggantikan n watak dalam objek rentetan utama dari indeks, pos, dengan argumen rentetan literal.
tali strCol1=tali('Saya sayang awak');strCol1=strCol1.ganti(2, 4, 'benci dia dan');
kos<<strCol1<< ' n';
Keluaran: Saya benci dia dan awak.
tali asas&ganti(size_type pos1,size_type n1,size_type n2,akta c)Menggantikan watak n1 dalam objek rentetan utama dari indeks, pos1, dengan n2 watak argumen yang sama.
tali strCol1=tali('Tablet buruk di sana.');strCol1=strCol1.ganti(9, 3, 2, 'atau');
kos<<strCol1<< ' n';
Keluaran: pantang larang di sana ..
penghapusan iterator (const_iterator p)
Mengeluarkan watak pada kedudukan yang ditunjukkan oleh iterator; kemudian mengembalikan kedudukan iterator, yang kini dihuni oleh watak yang berada di sebelah watak ini (atau akhir ()). Kod berikut menggambarkan ini:
tali strCol=tali('abcd');tali asas<char> ::iteratoriter=strCol.bermula();
++iter; ++iter;
strCol.padam(iter);
kos<<strCol[0] << '' <<strCol[1] << '
' <<strCol[2]<< ' n';
Keluaran: a b d
tali asas&padam(size_type pos= 0,saiz_jenis n=npos)Mengeluarkan n watak dari indeks, pos.
tali strCol=tali('abcd');strCol.padam(1, 2);
kos<<strCol[0] << '' <<strCol[1] << ' n';
Keluaran: a d
tolak tolak balik (charT c)
Untuk menambahkan satu watak di hujung rentetan:
tali strCol=tali('abcd');strCol.menolak kembali('5');
kos<<strCol<< ' n';
Keluaran: abcd5
batal pop_back ()
Mengeluarkan watak terakhir tanpa mengembalikannya. Ukuran tali dikurangkan sebanyak 1.
tali strCol=tali('abcde');strCol.pop_back();
kos<<strCol<< ' n';
Keluaran: abcd
pertukaran kosong (basic_string & s)
Literal dua objek rentetan dapat ditukar.
tali strCol1=tali(<sebuah id='pasca-69618 -__ DdeLink__781_3724385525'>ke>'abcde');tali strCol2=tali('1234567');
strCol1.pertukaran(strCol2);
kos<<strCol1<< ' n';
kos<<strCol2<< ' n';
Keluarannya adalah:
'1234567''abcde'
Operasi Rentetan
const charT * c_str () const kecuali
Mengembalikan penunjuk ke elemen rentetan pertama. Penunjuk boleh meningkat.
penyambungtali strCol=tali('abcde');penyambung char*hlm=strCol.c_str();
kos<< *hlm<< ' n';
++hlm;
kos<< *hlm<< ' n';
Keluaran adalah:
keb
Kerana konstanta kedua dalam tajuk, program tidak dapat mengubah watak dalam rentetan. Pembinaannya didahului oleh const.
data const charT * () const kecuali
Mengembalikan penunjuk ke elemen rentetan pertama. Penunjuk boleh meningkat.
penyambungtali strCol=tali('abcde');penyambung char*hlm=strCol.data();
kos<< *hlm<< ' n';
++hlm;
kos<< *hlm<< ' n';
Keluaran adalah:
keb
Kerana konstanta kedua dalam tajuk, program tidak dapat mengubah watak dalam rentetan. Pembinaannya didahului oleh const.
substrat basic_string (size_type pos = 0, size_type n = npos) konst
Mengembalikan objek rentetan watak n untuk sub-string bermula dari indeks, pos.
penyambungtali strCol=tali('abcdefghij');penyambungrentetan retStr=strCol.substrat(2, 4);
kos<<retStr<< ' n';
Keluaran: cdef
cari () Fungsi Anggota
size_type find (const basic_string & str, size_type pos = 0) const tiada
Mencari objek sub-string yang bermula dari indeks, pos. Sekiranya dijumpai, mengembalikan permulaan sub-rentetan pada rentetan utama.
tali strCol=tali('Kami adalah dunia!');tali strCol1=tali('yang');
intpada satu=strCol.cari(strCol1, 2);
kos<<pada satu<< ' n';
Pengeluaran:
indeks: 7Kembali -1, apabila tidak dijumpai.
size_type find (const charT * s, size_type pos = 0) const
Mencari literal sub-string yang bermula dari indeks, pos. Sekiranya dijumpai, mengembalikan permulaan sub-rentetan pada rentetan utama.
tali strCol=tali('Kami adalah dunia!');intpada satu=strCol.cari('adalah', 0);
kos<<pada satu<< ' n';
Oleh kerana pos = 0 adalah lalai, 0 dalam argumen mungkin telah dihilangkan.
Keluaran: 3
Kembali -1, apabila tidak dijumpai.
size_type find (const charT * s, size_type pos, size_type n) const
Mencari watak n pertama literal sub-string bermula dari indeks, pos. Sekiranya dijumpai, mengembalikan permulaan sub-rentetan pada rentetan utama.
tali strCol=tali('Budak terbesar');intpada satu=strCol.cari('lebih besar', 1, 3);
kos<<pada satu<< ' n';
Keluaran: 4
Kembali -1, apabila tidak dijumpai.
size_type find (charT c, size_type pos = 0) konst
Mencari watak, c bermula dari indeks, pos. Sekiranya dijumpai, mengembalikan permulaan sub-rentetan pada rentetan utama. Sekiranya tidak dijumpai, mengembalikan -1.
tali strCol=tali('Kami adalah dunia!');intpada satu=strCol.cari('Dengan');
kos<<pada satu<< ' n';
Keluaran: -1
Fungsi anggota mencari balik () terbalik berikut:
size_type rfind(penyambungtali asas&hlm,size_type pos=npos) penyambungtidak terkecuali;size_type rfind(penyambungamal*s,size_type pos=npos) penyambung;
size_type rfind(penyambungamal*s,size_type pos,saiz_jenis n) penyambung;
size_type rfind(akta c,size_type pos=npos) penyambung;
Fungsi Anggota Perbandingan
int membandingkan (const basic_string & str) const kecuali
Membandingkan objek rentetan argumen dengan objek rentetan utama. Sekiranya rentetan utama berlaku sebelum argumen (dalam kamus) ia mengembalikan nombor positif. Sekiranya ia berlaku selepas rentetan utama, ia mengembalikan nombor negatif. Sekiranya kedua-dua tali itu sama, ia mengembalikan sifar.
tali strCol1=tali('orang ramai');tali strCol2=tali('orang');
intpada satu=strCol1.membandingkan(strCol2);
kos<<pada satu<< ' n';
Keluaran: -13
int membandingkan (const charT * s) const
Sama seperti di atas, tetapi argumennya adalah rentetan literal.
tali strCol1=tali('orang');intpada satu=strCol1.membandingkan('orang');
kos<<pada satu<< ' n';
Keluaran: 0
Pengendali String
Operator ini boleh digunakan untuk objek rentetan dan tidak semestinya literal string.
+
Gabungkan dua objek rentetan, dan kembalikan penggabungan.
tali strCol1=tali('menari di');tali strCol2=tali(' bulan');
tali strCol=strCol1+strCol2;
kos<<strCol<< ' n';
Keluaran: menari di bulan.
==
Mengembalikan 1 untuk true, jika objek rentetan sama; dan sifar untuk palsu, jika tidak.
tali strCol1=tali('menari di');tali strCol2=tali(' di atas bulan');
bool bl=strCol1==strCol2;
kos<<bl<< ' n';
Keluaran: 0
! =
Mengembalikan 1 jika objek rentetan tidak sama, dan sifar jika ada.
tali strCol1=tali('menari di');tali strCol2=tali(' di atas bulan');
bool bl=strCol1! =strCol2;
kos<<bl<< ' n';
Keluaran: 1
<
Mengembalikan 1, jika operan kiri kurang daripada operan kanan mengikut kamus, atau sifar jika tidak.
tali strCol1=tali('menari di');tali strCol2=tali(' di atas bulan');
bool bl=strCol1<strCol2;
kos<<bl<< ' n';
Keluaran: 0
Untuk watak biasa dalam huruf C ++, dalam urutan menaik, angka muncul sebelum huruf besar, yang muncul sebelum huruf kecil. Watak ruang hadir sebelum sifar dan semuanya.
Jenis Perwatakan String Utama C ++
char
Jenis char adalah jenis C ++ yang asli dan biasanya menyimpan watak dalam 8 bit.
char16_t
Ini menyimpan watak dalam 16 bit.
char32_t
Ini menyimpan watak dalam 32 bit.
wchar_t
char16_t dan char32_t adalah watak yang luas. wchar_t adalah watak luas yang ditentukan oleh hak milik dan pelaksanaan.
Jenis-jenis ini dipanggil sifat. Walau bagaimanapun, C ++ merujuk kepada mereka secara teknikal sebagai, pengkhususan sifat. Artikel ini telah memberi tumpuan kepada jenis char. Pendekatan untuk jenis lain sedikit berbeza - lihat kemudian.
Fungsi Anggota Operasi Tali Lain
Tanda tangan fungsi operasi rentetan lain adalah:
size_type find_first_of(penyambungtali asas&hlm,size_type pos= 0) penyambungtidak terkecuali;size_type find_first_of(penyambungamal*s,size_type pos,saiz_jenis n) penyambung;
size_type find_first_of(penyambungamal*s,size_type pos= 0) penyambung;
size_type find_first_of(akta c,size_type pos= 0) penyambung;
size_type find_last_of(penyambungtali asas&hlm,size_type pos=npos) penyambungtidak terkecuali;
size_type find_last_of(penyambungamal*s,size_type pos,saiz_jenis n) penyambung;
size_type find_last_of(penyambungamal*s,size_type pos=npos) penyambung;
size_type find_last_of(akta c,size_type pos=npos) penyambung;
size_type find_first_not_of(penyambungtali asas&hlm,size_type pos= 0) penyambungtidak terkecuali;
size_type find_first_not_of(penyambungamal*s,size_type pos,saiz_jenis n) penyambung;
size_type find_first_not_of(penyambungamal*s,size_type pos= 0) penyambung;
size_type find_first_not_of(akta c,size_type pos= 0) penyambung;
size_type find_last_not_of(penyambungtali asas&hlm,size_type pos=npos) penyambungtidak terkecuali;
size_type find_last_not_of(penyambungamal*s,size_type pos,saiz_jenis n) penyambung;
size_type find_last_not_of(penyambungamal*s,size_type pos=npos) penyambung;
size_type find_last_not_of(akta c,size_type pos=npos) penyambung;
Kesimpulannya
C ++ mempunyai literal string dan objek rentetan. Objek rentetan mempunyai kumpulan watak secara berurutan, serupa dengan susunan watak mengikut urutan. Perbezaan antara koleksi tali dan array, adalah, bahawa koleksi tali dapat tumbuh panjang atau menyusut panjang. Objek rentetan dibuat (dibina) dari kelas rentetan. Objek tali adalah struktur data dengan fungsi anggota. Fungsi anggota dapat diklasifikasikan di bawah tajuk pembinaan objek, akses elemen, kapasiti rentetan, fungsi anggota rentetan dengan argumen iterator dan jenis pengembalian, dan pengubah rentetan. Persamaan tali dan pengendali hubungan juga wujud.