Cara menggunakan Kelas String C++

Literal string adalah urutan karakter dalam pointer array konstan yang diakhiri oleh karakter nul,. Ketika diidentifikasi, oleh sebuah variabel, string literal tidak dapat benar-benar mengurangi atau menambah panjangnya. Banyak operasi tidak dapat dilakukan pada string literal. Jadi, ada kebutuhan untuk kelas string. Kelas string C++ adalah untuk struktur data, kumpulan karakter secara berurutan, yang memungkinkan fungsi anggota dan operator untuk bertindak berdasarkan karakter. Kelas string memungkinkan lebih banyak manipulasi pada literal string yang sesuai, daripada hanya literal string. Anda harus memiliki pengetahuan yang baik tentang string literal, untuk memahami artikel ini.

Kelas dan Objek

Kelas adalah sekumpulan variabel dan fungsi yang bekerja bersama; di mana variabel tidak memiliki nilai yang ditetapkan. Ketika nilai ditugaskan ke variabel, kelas menjadi objek. Nilai berbeda yang diberikan pada kelas yang sama menghasilkan objek yang berbeda; yaitu, objek yang berbeda adalah kelas yang sama dengan nilai yang berbeda. Membuat objek dari kelas dikatakan membuat objek.

Nama, string, adalah kelas. Objek yang dibuat dari kelas string memiliki nama yang dipilih programmer.

Fungsi yang dimiliki oleh kelas diperlukan untuk membuat instance objek dari kelas. Dalam C++, fungsi tersebut memiliki nama yang sama dengan nama kelasnya. Objek yang dibuat (diinstantiated) dari kelas memiliki nama berbeda yang diberikan kepada mereka, oleh programmer.

Membuat objek dari kelas berarti membangun objek; itu juga berarti instantiating.

Program C++ yang menggunakan kelas string, dimulai dengan baris berikut di bagian atas file:

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

Baris pertama adalah untuk input/output. Baris kedua adalah mengizinkan program untuk menggunakan semua fitur dari kelas string. Baris ketiga memungkinkan program untuk menggunakan nama dalam namespace standar.

Membebani Fungsi

Ketika dua atau lebih tanda tangan fungsi yang berbeda memiliki nama yang sama, nama tersebut dikatakan kelebihan beban. Ketika satu fungsi dipanggil, jumlah dan jenis argumen, tentukan fungsi mana yang dieksekusi.

Konstruksi

string()
Pernyataan berikut membuat string dengan panjang nol tanpa karakter.

string strCol = string();

Itu dimulai dengan nama kelas (tipe objek), string. Ini diikuti dengan nama string objek, yang diberikan oleh programmer. Operator penugasan berikut; lalu nama konstruktor dengan tanda kurung kosong. Di sini, strCol adalah objek yang dipakai dengan semua anggota data (properti) dan fungsi anggota (metode).
string(str)
Ini mirip dengan yang di atas, tetapi menggunakan string literal atau pengidentifikasi sebagai argumen, dalam konstruktor. Pernyataan berikut menggambarkan hal ini:

string strCol = string("I love you");

Konstruksi dengan Daftar Penginisialisasi

Kode berikut menggambarkan hal ini:

string strCol = string({'I',' ','l','o','v','e',' ','y','o','u',' '});

String literalnya adalah “Aku mencintaimu”. Perhatikan karakter nul di akhir daftar penginisialisasi.

string(str, n)

Ini membentuk kumpulan string, dari n karakter pertama dari string lain. Kode berikut menggambarkan hal ini:

char str[] = "I love you";
string strCol = string(str, 6);
cout << strCol << 'n';

Outputnya adalah “I love” dengan 6 karakter pertama dari “I love you”. Ingat: spasi tunggal adalah karakter.

string(str, pos, n)

Ini membentuk kumpulan string dari n karakter, mulai dari posisi terindeks berbasis nol, pos, dari string lain. Kode berikut menggambarkan hal ini:

char str[] = "I love you";
string strCol = string(str, 2, 4);
cout << strCol << 'n';

Outputnya adalah, “cinta”.

Untuk dua kasus di atas, jika n lebih besar dari ukuran string, pengecualian out_of_range dilempar – lihat nanti.

string(n, ‘c’)

Membentuk kumpulan n karakter, dimana semua karakter adalah sama. Mempertimbangkan,

string strCol = string(5,'e');
cout << strCol << 'n';

Outputnya adalah, “eeeee”, 5 e’s.

Menetapkan String

Sebuah string dapat ditetapkan sebagai berikut, setelah mendeklarasikan kedua string:

string strCol1 = string("I love you");
string strCol2;
strCol2 = strCol1;
cout << strCol2 << 'n';

Outputnya adalah, “Aku mencintaimu”.

Membangun dengan Iterator

Iterator menyediakan representasi generik pemindaian, melalui nilai-nilai koleksi. Sintaks untuk membuat string dengan iterator, adalah:

template<class InputIterator>
basic_string(InputIterator begin, InputIterator end, const Allocator&
 a = Allocator());

Ini membuat string untuk rentang [mulai, akhir) – lihat detailnya nanti.

Menghancurkan String

Untuk menghancurkan string, biarkan saja keluar dari ruang lingkup.

Akses Elemen Kelas String

Objek string yang dipakai dapat dibuat sub-skrip (diindeks) seperti array. Penghitungan indeks dimulai dari nol.

nama string[i]

Operasi “stringName[i]” mengembalikan referensi ke karakter (elemen) pada indeks ke-i dari koleksi karakter. Kode berikut menghasilkan v:

string strCol = string("I love you");
char ch = strCol[4];
cout << ch << 'n';

stringName[i] const

Operasi “stringName[i] const” dijalankan alih-alih “stringName[i]” ketika objek string adalah objek konstan. Ini digunakan dalam kode berikut misalnya:

const string strCol = string("I love you");
char ch = strCol[4];
cout << ch << 'n';

Ekspresi mengembalikan referensi konstan ke elemen ke-i dari objek string. Tak satu pun dari elemen string dapat diubah.

Menetapkan Karakter dengan Subscript

Sebuah karakter dapat ditetapkan ke objek string non-konstan, sebagai berikut:

string strCol = string("I call");
strCol[2] = 'f';
cout << strCol << 'n';

Outputnya adalah “Saya jatuh”. ‘c’ diubah menjadi ‘f’.

stringName.at(i)

“stringName.at(i)” mirip dengan “stringName[i]”, tetapi “stringName.at(i)” lebih dapat diandalkan. Kode berikut menunjukkan cara menggunakannya:

string strCol = string("I love you");
char ch = strCol.at(4);
cout << ch << 'n';

at() sebenarnya adalah fungsi anggota kelas string.

stringName.at(i) const

“stringName.at(i) const” mirip dengan “stringName[i] const”, tetapi “stringName.at(i) const” lebih dapat diandalkan. “stringName.at(i) const” dijalankan sebagai ganti “stringName.at(i)” ketika objek string adalah objek string konstan. Ini digunakan dalam kode berikut, misalnya:

const string strCol = string("I love you");
char ch = strCol.at(4);
cout << ch << 'n';

“at() const” sebenarnya adalah fungsi anggota kelas string.

Menetapkan Nilai dengan Fungsi at()

Nilai dapat ditetapkan ke objek string non-konstan, dengan fungsi at(), sebagai berikut:

string strCol = string("I call");
strCol.at(2) = 'f';
cout << strCol << 'n';

Outputnya adalah “Saya jatuh”.

Masalah dengan Sub-scripting

Masalah dengan sub-scripting (pengindeksan), bahwa jika indeks berada di luar jangkauan, hasil yang salah dapat diperoleh, atau error dapat dikeluarkan saat run-time.

depan()

Ini mengembalikan referensi ke elemen pertama dari objek string, tanpa menghapus elemen. Output dari
kode berikut adalah ‘I’.

string strCol = string("I love you");
char ch = strCol.front();
cout << ch << 'n';

Karakter tidak dihapus dari objek string.

depan() konstan

Ketika konstruksi objek string didahului oleh const, ekspresi “front() const” akan dieksekusi sebagai ganti “front()”. Ini digunakan dalam kode berikut, misalnya.

const string strCol = string("I love you");
char ch = strCol.front();
cout << ch << 'n';

Referensi konstan dikembalikan. Elemen tidak dihapus dari objek string. Tidak ada karakter yang dapat diubah untuk objek string konstan.

kembali()

Ini mengembalikan referensi ke elemen terakhir dari objek string, tanpa menghapus elemen. Output dari kode berikut adalah ‘u’.

string strCol = string("I love you");
char ch = strCol.back();
cout << ch << 'n';

kembali() const

Ketika konstruksi objek string didahului oleh const, ekspresi “back() const” akan dieksekusi alih-alih “back()”. Ini digunakan dalam kode berikut, misalnya.

const string strCol = string("I love you");
char ch = strCol.back();
cout << ch << 'n';

Referensi konstan dikembalikan. Elemen tidak dihapus dari objek string.

Kapasitas Tali

size_type capacity() const noexcept

Jumlah total karakter yang dapat ditampung string tanpa memerlukan realokasi, dikembalikan oleh fungsi anggota kapasitas ini. Segmen kode untuk ini adalah:

string strCol = string();
int num = strCol.capacity();
cout << num << 'n';

Outputnya adalah 15 di komputer saya.

cadangan (n)

Ruang memori tidak selalu tersedia di toko gratis. Ruang ekstra dapat dipesan terlebih dahulu. Perhatikan segmen kode berikut:

string strCol = string("love");
strCol.reserve(6);
cout << strCol.capacity() << 'n';

Outputnya adalah 15 di komputer saya.

size() const nokecuali

Ini mengembalikan jumlah karakter dalam string. Kode berikut menggambarkan:

string strCol = string("I love you");
int num = strCol.size();
cout << num << 'n';

Outputnya adalah 10, yang tidak termasuk karakter nul,.

panjang() const tidak kecuali

- same as size().
Note: size() <= capacity().

menyusut agar sesuai()

Dapat mengurangi capacity() menjadi size() dengan menyebabkan realokasi; itu tidak wajib. Kode berikut menunjukkan ini:

string strCol = string("I love you");
strCol.reserve(12);
strCol.shrink_to_fit();
int sz = strCol.size();
cout << sz << 'n';

Outputnya adalah 10 dan bukan 12 atau 16. Fungsi mengembalikan void.

ubah ukuran(sz), ubah ukuran(sz,’c’)

Ini mengubah ukuran string. Jika ukuran baru lebih kecil dari ukuran lama, maka elemen menjelang akhir dihapus. Jika ukuran baru lebih panjang, maka beberapa karakter default ditambahkan menjelang akhir. Untuk menambahkan karakter tertentu, gunakan fungsi resize() dengan dua argumen. Segmen kode berikut menggambarkan useran dua fungsi:

string strCol = string("I love you");
strCol.resize(6);
cout << "New size of strCol: " << strCol.size() << 'n';
string strCol1 = string("I love", 'e');
strCol1.resize(12);
cout << "New size of strCol1: " << strCol1.size() << 'n';

Outputnya adalah:

New size of strCol: 6
New size of strCol1: 12
function returns void.

hapus() tidak kecuali

Menghapus semua elemen dari string, seperti yang diilustrasikan oleh segmen kode berikut:

string strCol = string("I love you");
strCol.clear();
cout << strCol.size() << 'n';

Outputnya adalah 0. Fungsi mengembalikan void.

kosong() const nokecuali

Ini mengembalikan 1 untuk true jika tidak ada karakter dalam objek string, atau 0 untuk false jika objek string tidak kosong. Kode berikut menggambarkan hal ini:

string strCol1 = string("I love you");
cout << strCol1.empty() << 'n';
string strCol2 = string();
cout << strCol2.empty() << 'n';

Outputnya adalah:

0
1

Mengembalikan Iterator dan Kelas String

Iterator seperti pointer tetapi memiliki lebih banyak fungsi daripada pointer.

mulai() tidak kecuali

Mengembalikan iterator yang menunjuk ke karakter pertama (elemen) dari objek string, seperti pada segmen kode berikut:

string strCol = string("I love you");
basic_string<char>::iterator iter = strCol.begin();
cout << *iter << 'n';

Outputnya adalah ‘aku’. Perhatikan cara deklarasi yang menerima iterator, telah dideklarasikan. Iterator didereferensi dalam ekspresi pengembalian untuk mendapatkan nilai, dengan cara yang sama, seperti penunjuk dereferensi.

mulai() const nokecuali;

Mengembalikan iterator yang menunjuk ke elemen pertama dari kumpulan objek string. Ketika konstruksi objek didahului oleh const, ekspresi “begin() const” akan dieksekusi alih-alih “begin()”. Dalam kondisi ini, elemen yang sesuai dalam objek tidak dapat dimodifikasi. Ini digunakan dalam kode berikut, misalnya.

const string strCol = string("I love you");
basic_string<char>::const_iterator iter = strCol.begin();
cout << *iter << 'n';

Outputnya adalah ‘aku’. Perhatikan bahwa const_iterator telah digunakan kali ini, bukan hanya iterator, untuk menerima iterator yang dikembalikan.

akhir() tidak kecuali

Mengembalikan iterator yang menunjuk tepat di luar elemen terakhir dari objek string. Perhatikan segmen kode berikut:

string strCol = string("I love you");
basic_string<char>::iterator iter = strCol.end();
cout << *iter << 'n';

Outputnya nol, yang bukan apa-apa, karena tidak ada elemen konkret di luar elemen terakhir.

end() const nokecuali

Mengembalikan iterator yang menunjuk tepat di luar elemen terakhir dari objek string. Ketika konstruksi objek string didahului oleh const, ekspresi “end() const” akan dieksekusi alih-alih “end()”. Perhatikan segmen kode berikut:

const string strCol = string("I love you");
basic_string<char>::const_iterator iter = strCol.end();
cout << *iter << 'n';

Outputnya nol. Perhatikan bahwa const_iterator telah digunakan kali ini, bukan hanya iterator, untuk menerima iterator yang dikembalikan.

Iterasi Terbalik

Dimungkinkan untuk memiliki iterator yang beralih dari akhir yang sebenarnya ke tepat sebelum elemen pertama:

rbegin() tidak kecuali

Mengembalikan iterator yang menunjuk ke elemen terakhir dari objek yang dipakai string, seperti pada segmen kode berikut:

string strCol = string("I love you");
basic_string<char>::reverse_iterator iter = strCol.rbegin();
cout << *iter << 'n';

Outputnya adalah ‘u’. Perhatikan cara deklarasi yang menerima iterator terbalik, telah dideklarasikan. Iterator didereferensi dalam ekspresi pengembalian untuk mendapatkan nilai, dengan cara yang sama, seperti penunjuk dereferensi.

rbegin() const noexcept;

Mengembalikan iterator yang menunjuk ke elemen terakhir dari objek string. Ketika konstruksi objek didahului oleh const, ekspresi “rbegin() const” akan dieksekusi alih-alih “rbegin()”. Dalam kondisi ini, elemen yang sesuai dalam objek tidak dapat dimodifikasi. Fitur ini digunakan dalam kode berikut, misalnya.

const string strCol = string("I love you");
basic_string<char>::const_reverse_iterator iter = strCol.rbegin();
cout << *iter << 'n';

Outputnya adalah ‘u’. Perhatikan bahwa const_reverse_iterator telah digunakan kali ini, bukan hanya reverse_iterator, untuk menerima iterator yang dikembalikan.

rend() tidak kecuali

Mengembalikan iterator yang menunjuk tepat sebelum elemen pertama dari objek string. Perhatikan segmen kode berikut:

string strCol = string("I love you");
basic_string<char>::reverse_iterator iter = strCol.rend();
cout << *iter << 'n';

Outputnya nol, yang bukan apa-apa, karena tidak ada elemen konkret tepat sebelum elemen pertama.

rend() const tidak kecuali

Mengembalikan iterator yang menunjuk tepat sebelum elemen pertama dari objek string. Ketika konstruksi objek didahului oleh const, ekspresi “rend() const” akan dieksekusi alih-alih “rend()”. Perhatikan segmen kode berikut:

const string strCol = string("I love you");
basic_string<char>::const_reverse_iterator iter = strCol.rend();
cout << *iter << 'n';

Outputnya nol. Perhatikan bahwa const_reverse_iterator telah digunakan kali ini, bukan hanya reverse_iterator, untuk menerima iterator yang dikembalikan.

Pengubah String

Pengubah yang memodifikasi objek string, juga dapat mengambil atau mengembalikan iterator.

menambahkan

basic_string& operator+=(const basic_string& str)

Menambahkan objek string kanan ke objek string kiri. Contoh:

string strCol1 = string("I love");
string strCol2 = string(" you");
strCol1 += strCol2;
cout << strCol1 << 'n';

Outputnya adalah “Aku mencintaimu”. Jangan lupa bahwa “strCol1 += strCol2” sama dengan “strCol1 = strCol1+strCol2”.

basic_string& operator+=(const chart* s)

Menambahkan literal string ke koleksi objek string. Contoh:

string strCol = string("I love");
strCol += " you";
cout << strCol << 'n';

Keluaran: “Aku mencintaimu”.

basic_string& operator+=(bagan c)

Menambahkan satu karakter ke string objek. Contoh:

string strCol = string("I love yo");
strCol += 'u';
cout << strCol << 'n';

Keluaran: “Aku mencintaimu”.

basic_string& operator+=(initializer_list<charT>)

Menambahkan daftar penginisialisasi. Contoh:

string strCol = string("I love");
strCol += {' ','y','o','u',' '};
cout << strCol << 'n';

Keluaran: “Aku mencintaimu”. Itu selalu baik untuk menambahkan nul, di akhir daftar penginisialisasi karakter.

basic_string& tambahkan (const basic_string& str)

Menambahkan objek string argumen ke objek string utama. Contoh:

string strCol1 = string("I love");
string strCol2 = string(" you");
strCol1.append(strCol2);
cout << strCol1 << 'n';

Keluaran: “Aku mencintaimu”.

basic_string& tambahkan(const charT* s)

Menambahkan argumen literal string ke string utama. Contoh

string strCol = string("I love");
strCol = strCol.append(" you");
cout << strCol << 'n';

Keluaran: “Aku mencintaimu”.

basic_string& tambahkan(initializer_list<charT>)

Menambahkan daftar penginisialisasi, yang merupakan argumen, ke string utama. Contoh:

string strCol = string("I love");
strCol = strCol.append({' ','y','o','u',' '});
cout << strCol << 'n';

Keluaran: “Aku mencintaimu”. Itu selalu baik untuk menambahkan nul, karakter di akhir daftar penginisialisasi.

basic_string& tambahkan(size_type n, bagan c)

Menambahkan n karakter yang sama. Contoh:

string strCol = string("tab");
strCol = strCol.append(2, 'o');
cout << strCol << 'n';

Keluaran: “tabu”.

basic_string& tambahkan(const charT* s, size_type n)

Menambahkan n elemen pertama dari string literal ke objek string utama. Contoh:

string strCol = string("I love");
strCol = strCol.append(" you so", 4);
cout << strCol << 'n';

Outputnya adalah: “Aku mencintaimu”. Jika n lebih besar dari panjang literal, penge
cualian length_error dilempar.

basic_string& append(const basic_string& str, size_type pos, size_type n = npos)

Menambahkan n karakter dari indeks, pos ke string utama. Contoh:

string strCol = string("I love");
strCol = strCol.append("ve you so", 2, 4);
cout << strCol << 'n';

Keluaran: “Aku mencintaimu”. Pengecualian juga akan dilemparkan ke sini, lihat nanti.

menugaskan

basic_string& assign(const basic_string& str)

Menetapkan objek string argumen ke string utama, menggantikan konten apa pun yang ada di sana.

string strCol1 = string("I love you");
string strCol2 = string("She needs me");
strCol1 = strCol1.assign(strCol2);
cout << strCol1 << 'n';

Output: “Dia membutuhkan saya”.

basic_string& assign(const charT* s)

Menetapkan argumen literal string ke string utama, menggantikan konten apa pun yang ada di sana.

string strCol = string("I love you");
strCol = strCol.assign("She needs me");
cout << strCol << 'n';

Output: “Dia membutuhkan saya”.

basic_string& assign(initializer_list<charT>)

Assigns an initializer list argument to the main string, replacing any content that was there.
[cc lang="c" escaped="true" width="780"]
string strCol = string("I love you");
strCol = strCol.assign({'S','h','e',' ','n','e','e','d','s',' ','m','e',' '});
cout << strCol << 'n';

Output: “Dia membutuhkan saya”. Adalah baik untuk selalu menambahkan nul, di akhir daftar karakter, untuk membentuk literal string.

basic_string& assign(const charT* s, size_type n)

Menetapkan n karakter pertama dari argumen literal string ke string utama, menggantikan konten apa pun yang ada di sana.

string strCol = string("I love you");
strCol = strCol.assign("She needs me", 9);
cout << strCol << 'n';

Keluaran: “Dia membutuhkan”.

basic_string& assign(size_type n, charT c)

Menetapkan argumen n karakter yang sama ke string utama, menggantikan konten apa pun yang ada di sana.

string strCol = string("I love you");
strCol = strCol.assign(4, 'e');
cout << strCol << 'n';

Keluaran: eeee

basic_string& assign(const basic_string& str, size_type pos, 
size_type n = npos)

Menetapkan n karakter argumen objek string, mulai dari pos, hingga string utama, menggantikan konten apa pun yang ada di sana.

string strCol = string("I love you");
strCol = strCol.assign("She needs me", 4, 5);
cout << strCol << 'n';

Keluaran: “kebutuhan”. Akan memberikan pengecualian – lihat nanti.

memasukkan

basic_string& insert(size_type pos, const basic_string& str)

Menyisipkan argumen objek string ke string utama, di indeks, pos.

string strCol1 = string("I love you");
string strCol2 = string("hate and ");
strCol1 = strCol1.insert(2, strCol2);
cout << strCol1 << 'n';

Output: “Aku benci dan mencintaimu”. Akan memberikan pengecualian – lihat nanti.

basic_string& insert(size_type pos1, const basic_string&
 str,size_type pos2, size_type n = npos)

Menyisipkan panjang n karakter dari pos2 argumen objek string, ke string utama, pada indeks, pos1.

string strCol1 = string("I love you");
string strCol2 = string("hate, want and need");
strCol1 = strCol1.insert(2, strCol2, 6, 9);
cout << strCol1 << 'n';

Output: “Aku ingin dan mencintaimu”.

iterator insert(const_iterator p, charT c)

Menyisipkan karakter tertentu, yang merupakan argumen, ke dalam posisi yang ditunjukkan oleh iterator. Mengembalikan iterator untuk posisi karakter yang baru dimasukkan.

string strCol = string("I love you");
basic_string<char>::iterator iter = strCol.begin();
++iter; ++iter; ++iter; ++iter; ++iter; ++iter;
basic_string<char>::iterator retI = strCol.insert(iter, 'd');
cout << *retI << 'n';
cout << strCol << 'n';

Outputnya adalah:

‘D’

“Aku mencintaimu”

penyisipan iterator(const_iterator p, size_type n, bagan c)

Menyisipkan n karakter argumen yang sama, ke dalam posisi, yang ditunjukkan oleh iterator. Mengembalikan iterator untu
k posisi awal karakter yang sama yang baru dimasukkan.

string strCol = string("Tab in the land.");
basic_string<char>::iterator iter = strCol.begin();
++iter; ++iter; ++iter;
basic_string<char>::iterator retI = strCol.insert(iter, 2, 'o');
cout << *retI << 'n';
cout << strCol << 'n';

Outputnya adalah:

‘Hai’

“Tabu di tanah.”

 

basic_string& insert(size_type pos, const charT* s)

Menyisipkan string argumen literal pada indeks, pos dalam string utama.

string strCol = string("Tab in the land.");
strCol = strCol.insert(3, "oo");
cout << strCol << 'n';

Output: “Tabu di tanah.”

basic_string& insert(size_type pos, const charT* s, size_type n)

Menyisipkan n karakter pertama dari string argumen literal, pada indeks, pos dalam string utama.

string strCol = string("Tab in the land.");
strCol = strCol.insert(3, "oooo", 2);
cout << strCol << 'n';

Output: “Tabu di tanah.”

Mengganti

basic_string& replace(size_type pos1, size_type n1, const basic_string& str))

Mengganti n1 karakter dalam objek string utama dari indeks, pos1, dengan objek string argumen.

string strCol1 = string("I love you");
string strCol2 = string("hate you and");
strCol1 = strCol1.replace(2, 4, strCol2);
cout << strCol1 << 'n';

Output: “Aku benci kamu dan kamu”. Akan memberikan pengecualian – lihat nanti.

basic_string& replace(size_type pos1, size_type n1, const basic_string&
 str,size_type pos2, size_type n2 = npos)

Mengganti n1 karakter dalam objek string utama dari indeks, pos1, dengan n2 karakter objek string argumen dari indeks, pos2.

string strCol1 = string("I love you");
string strCol2 = string("we hate him and her");
strCol1 = strCol1.replace(2, 4, strCol2, 3, 12);
cout << strCol1 << 'n';

Output: “Aku benci dia dan kamu”.

basic_string& replace(size_type pos1, size_type n1, const charT* s,
 size_type n2)

Mengganti n1 karakter dalam objek string utama dari indeks, pos1, dengan n2 karakter pertama dari argumen string literal.

string strCol1 = string("I love you");
strCol1 = strCol1.replace(2, 4, "hate him and her", 12);
cout << strCol1 << 'n';

Output: “Aku benci dia dan kamu”.

basic_string& replace(size_type pos, size_type n, const charT* s)

Mengganti n karakter dalam objek string utama dari indeks, pos, dengan argumen string literal.

string strCol1 = string("I love you");
strCol1 = strCol1.replace(2, 4, "hate him and");
cout << strCol1 << 'n';

Output: “Aku benci dia dan kamu”.

basic_string& replace(size_type pos1, size_type n1, size_type n2, charT c)

Mengganti n1 karakter dalam objek string utama dari indeks, pos1, dengan n2 karakter yang sama dari argumen.

string strCol1 = string("A bad tablet there.");
strCol1 = strCol1.replace(9, 3, 2, 'o');
cout << strCol1 << 'n';

Output: “Sebuah tabu yang buruk di sana.”.

penghapusan iterator(const_iterator p)

Menghapus karakter pada posisi yang ditunjuk oleh iterator; kemudian mengembalikan posisi iterator, yang sekarang ditempati oleh karakter yang berada di sebelah karakter ini (atau end()). Kode berikut menggambarkan hal ini:

string strCol = string("abcd");
basic_string<char>::iterator iter = strCol.begin();
++iter; ++iter;
strCol.erase(iter);
cout << strCol[0] << ' ' << strCol[1] << '
' << strCol[2]<< 'n';

Keluaran: abd

basic_string& erase(size_type pos = 0, size_type n = npos)

Menghapus n karakter dari indeks, pos.

string strCol = string("abcd");
strCol.erase(1, 2);
cout << strCol[0] << ' ' << strCol[1] << 'n';

Keluaran: iklan

batalkan push_back(bagan c)

Untuk menambahkan satu karakter di akhir string:

string strCol = string("abcd");
strCol.push_back('5');
cout << strCol << 'n';

Keluaran: abcd5

batal pop_back()

Menghapus karakter terakhir tanpa mengembalikann
ya. Ukuran string berkurang 1.

string strCol = string("abcde");
strCol.pop_back();
cout << strCol << 'n';

Keluaran : abcd

batalkan swap(string_dasar& s)

Literal dari dua objek string dapat ditukar.

string strCol1 = string(<a id="post-69618-__DdeLink__781_3724385525"></a>"abcde");
string strCol2 = string("1234567");
strCol1.swap(strCol2);
cout << strCol1 << 'n';
cout << strCol2 << 'n';

Outputnya adalah:

"1234567"
"abcde"

Operasi Tali

const charT* c_str() const nokecuali

Mengembalikan pointer ke elemen pertama dari string. Pointer dapat bertambah.

const string strCol = string("abcde");
const char* p = strCol.c_str();
cout << *p << 'n';
++p;
cout << *p << 'n';

Keluarannya adalah:

a
b

Karena const kedua dalam heading, program tidak dapat mengubah karakter apa pun dalam string. Konstruksi didahului oleh const.

const charT* data() const nokecuali

Mengembalikan pointer ke elemen pertama dari string. Pointer dapat bertambah.

const string strCol = string("abcde");
const char* p = strCol.data();
cout << *p << 'n';
++p;
cout << *p << 'n';

Keluarannya adalah:

a
b

Karena const kedua dalam heading, program tidak dapat mengubah karakter apa pun dalam string. Konstruksi didahului oleh const.

basic_string substr(size_type pos = 0, size_type n = npos) const

Mengembalikan objek string n karakter untuk sub-string yang dimulai dari indeks, pos.

const string strCol = string("abcdefghij");
const string retStr = strCol.substr(2, 4);
cout << retStr << 'n';

Keluaran: cdef

find() Fungsi Anggota

size_type find(const basic_string& str, size_type pos = 0) const noexcept

Mencari objek sub-string mulai dari indeks, pos. Jika ditemukan, mengembalikan awal sub-string dalam string utama.

string strCol = string("We are the world!");
string strCol1 = string("the");
int num = strCol.find(strCol1, 2);
cout << num << 'n';

Keluaran:

index: 7
Returns -1, when not found.

size_type find(const charT* s, size_type pos = 0) const

Mencari literal sub-string yang dimulai dari indeks, pos. Jika ditemukan, mengembalikan awal sub-string dalam string utama.

string strCol = string("We are the world!");
int num = strCol.find("are", 0);
cout << num << 'n';

Karena “pos = 0” adalah default, 0 dalam argumen bisa saja dihilangkan.

Keluaran: 3

Mengembalikan -1, bila tidak ditemukan.

size_type temukan (const charT* s, size_type pos, size_type n) const

Mencari n karakter pertama dari literal sub-string yang dimulai dari indeks, pos. Jika ditemukan, mengembalikan awal sub-string dalam string utama.

string strCol = string("biggest boy");
int num = strCol.find("bigger", 1, 3);
cout << num << 'n';

Keluaran: 4

Mengembalikan -1, bila tidak ditemukan.

size_type find(charT c, size_type pos = 0) const

Mencari karakter, c mulai dari index, pos. Jika ditemukan, mengembalikan awal sub-string dalam string utama. Jika tidak ditemukan, kembalikan -1.

string strCol = string("We are the world!");
int num = strCol.find('z');
cout << num << 'n';

Keluaran: -1

Fungsi anggota reverse find() berikut ada:

size_type rfind(const basic_string& str, size_type pos = npos) const noexcept;
size_type rfind(const charT* s, size_type pos = npos) const;
size_type rfind(const charT* s, size_type pos, size_type n) const;
size_type rfind(charT c, size_type pos = npos) const;

Fungsi Anggota Perbandingan

int bandingkan(const basic_string& str) const noexcept

Membandingkan objek string argumen dengan objek string utama. Jika string utama muncul sebelum argumen (dalam kamus) ia mengembalikan angka positif. Jika itu terjadi setelah string utama, itu mengembalikan angka negatif. Jika dua string yang sama, ia mengembalikan nol.

string strCol1 = string("crowd");
string strCol2 = string("people");
int num = strCol1.compare(strCol2);
cout << num << 'n';

Keluaran: -13

int bandingkan(const charT* s) const

Sama seperti di atas, tetapi argumennya adalah string literal.

string strCol1 = string("people");
int num = strCol1.compare("people");
cout << num << 'n';

Keluaran: 0

Operator String

Operator ini berlaku untuk objek string dan tidak harus literal string.

+

Menggabungkan dua objek string, dan mengembalikan rangkaian.

string strCol1 = string("dancing on");
string strCol2 = string(" the moon");
string strCol = strCol1+strCol2;
cout << strCol << 'n';

Output: “menari di bulan”.

==

Mengembalikan 1 untuk true, jika objek string sama; dan nol untuk false, jika tidak.

string strCol1 = string("dancing on");
string strCol2 = string(" on the moon");
bool bl = strCol1 == strCol2;
cout << bl << 'n';

Keluaran: 0

!=

Mengembalikan 1 jika objek string tidak sama, dan nol jika objek string sama.

string strCol1 = string("dancing on");
string strCol2 = string(" on the moon");
bool bl = strCol1 != strCol2;
cout << bl << 'n';

Keluaran: 1

<

Mengembalikan 1, jika operan kiri kurang dari operan kanan menurut kamus, atau nol jika tidak.

string strCol1 = string("dancing on");
string strCol2 = string(" on the moon");
bool bl = strCol1 < strCol2;
cout << bl << 'n';

Keluaran: 0

Untuk karakter biasa di C++, dalam urutan menaik, angka datang sebelum huruf besar, yang datang sebelum huruf kecil. Karakter spasi datang sebelum nol dan semuanya.

Tipe Karakter String Utama C++

arang

Tipe char adalah tipe C++ asli dan biasanya akan menyimpan karakter dalam 8 bit.

char16_t

Ini menyimpan karakter dalam 16 bit.

char32_t

Ini menyimpan karakter dalam 32 bit.

wchar_t

char16_t dan char32_t adalah karakter lebar. wchar_t adalah karakter lebar yang dipatenkan dan ditentukan implementasi.

Jenis-jenis ini disebut sifat. Namun, C++ menyebutnya secara teknis sebagai, spesialisasi sifat. Artikel ini telah difokuskan pada jenis char. Pendekatan untuk jenis lainnya sedikit berbeda – lihat nanti.

Fungsi Anggota Operasi String Lainnya

Tanda tangan dari fungsi operasi string lainnya adalah:

size_type find_first_of(const basic_string& str, size_type pos = 0) const noexcept;
size_type find_first_of(const charT* s, size_type pos, size_type n) const;
size_type find_first_of(const charT* s, size_type pos = 0) const;
size_type find_first_of(charT c, size_type pos = 0) const;
size_type find_last_of (const basic_string& str, size_type pos = npos) const noexcept;
size_type find_last_of (const charT* s, size_type pos, size_type n) const;
size_type find_last_of (const charT* s, size_type pos = npos) const;
size_type find_last_of (charT c, size_type pos = npos) const;
size_type find_first_not_of(const basic_string& str, size_type pos = 0) const noexcept;
size_type find_first_not_of(const charT* s, size_type pos, size_type n) const;
size_type find_first_not_of(const charT* s, size_type pos = 0) const;
size_type find_first_not_of(charT c, size_type pos = 0) const;
size_type find_last_not_of (const basic_string& str, size_type pos = npos) const noex cept;
size_type find_last_not_of (const charT* s, size_type pos, size_type n) const;
size_type find_last_not_of (const charT* s, size_type pos = npos) const;
size_type find_last_not_of (charT c, size_type pos = npos) const;

Kesimpulan

C++ memiliki literal string dan objek string. Objek string memiliki kumpulan karakter secara berurutan, mirip dengan array karakter secara berurutan. Perbedaan antara kumpulan string dan larik adalah, kumpulan string dapat bertambah panjang atau menyusut. Objek string dipakai (dibangun) dari kelas string. Objek string adalah struktur data dengan fungsi anggota. Fungsi anggota dapat diklasifikasikan di bawah judul konstruksi objek, akses elemen, kapasitas string, fungsi anggota string dengan argumen iterator dan tipe pengembalian, dan pengubah string. Persamaan string dan operator relasional juga ada.

Related Posts