Panduan Ramah untuk Pemula: String dalam C++

Halo sana, bintang coding masa depan! Sebagai guru ilmu komputer dengan pengalaman tahunan, saya sangat antusias untuk membawa Anda dalam perjalanan melalui dunia menakjubkan string dalam C++. Jangan khawatir jika Anda belum pernah menulis baris kode sebelumnya - kita akan mulai dari awal dan bekerja bersama-sama menuju atas. Pada akhir panduan ini, Anda akan menjadi ahli memanipulasi string seperti yang terbaik! (Maaf, saya tidak bisa menahan diri untuk memberikan一个小小的 string pun untuk memulai!)

C++ Strings

String gaya C

mari kita mulai dengan nenek moyang semua string dalam C++: string gaya C. String ini adalah warisan dari bahasa pemrograman C, tetapi tetap penting untuk dipahami dalam C++.

Apa itu string gaya C?

String gaya C adalah sebenarnya array karakter yang diakhiri oleh karakter khusus yang disebut penutup nol (\0). Penutup nol ini memberitahu komputer dimana string berakhir.

Ini adalah contoh sederhana:

char greeting[] = "Hello";

Dalam kasus ini, greeting sebenarnya adalah array 6 karakter: {'H', 'e', 'l', 'l', 'o', '\0'}.

Memanipulasi string gaya C

mari kita lihat beberapa operasi umum dengan string gaya C:

  1. Deklarasi dan inisialisasi:
char name[20] = "Alice";  // Mendeklarasikan string dengan maksimum 19 karakter (ditambah penutup nol)
char city[] = "New York"; // Ukuran ditentukan secara otomatis
  1. Masukan dan keluaran:
#include <iostream>
#include <cstring>

int main() {
char food[50];
std::cout << "Makanan kesukaan Anda apa? ";
std::cin.getline(food, 50);
std::cout << "Ah, " << food << " rasanya enak!" << std::endl;
return 0;
}

Dalam contoh ini, kita menggunakan cin.getline() untuk membaca seluruh baris masukan, termasuk spasi.

  1. Manipulasi string:

String gaya C dapat dimanipulasi menggunakan fungsi dari library <cstring>. Berikut adalah beberapa yang umum:

Fungsi Deskripsi Contoh
strlen() Dapatkan panjang string int len = strlen(name);
strcpy() Salin satu string ke string lain strcpy(dest, src);
strcat() Gabungkan string strcat(str1, str2);
strcmp() Bandingkan string int result = strcmp(str1, str2);

Ini adalah program kecil yang memanfaatkan fungsi-fungsi ini:

#include <iostream>
#include <cstring>

int main() {
char first_name[20] = "John";
char last_name[20] = "Doe";
char full_name[40];

std::cout << "Panjang nama depan: " << strlen(first_name) << std::endl;

strcpy(full_name, first_name);
strcat(full_name, " ");
strcat(full_name, last_name);

std::cout << "Nama lengkap: " << full_name << std::endl;

if (strcmp(first_name, last_name) == 0) {
std::cout << "Nama depan dan nama belakang sama!" << std::endl;
} else {
std::cout << "Nama depan dan nama belakang berbeda." << std::endl;
}

return 0;
}

Program ini menunjukkan perhitungan panjang string, penyalinan, penggabungan, dan perbandingan. Sangat keren, kan?

Kelas String dalam C++

Sekarang, mari kita pindah ke cara yang lebih modern dan mudah untuk memanipulasi string dalam C++: kelas std::string.

Pengenalan ke std::string

Kelas std::string adalah bagian dari Library Standar C++ dan menyediakan cara yang lebih ramah pengguna untuk bekerja dengan string. Itu mengelola manajemen memori secara otomatis dan datang dengan sejumlah besar fungsi anggota yang berguna.

Untuk menggunakan std::string, Anda perlu menyertakan header <string>:

#include <string>

Membuat dan menggunakan objek std::string

mari kita lihat beberapa contoh:

  1. Deklarasi dan inisialisasi:
std::string greeting = "Hello, world!";
std::string name("Alice");
std::string empty_string;  // Membuat string kosong
  1. Masukan dan keluaran:
#include <iostream>
#include <string>

int main() {
std::string favorite_color;
std::cout << "Warna kesukaan Anda apa? ";
std::getline(std::cin, favorite_color);
std::cout << "Ah, " << favorite_color << " adalah warna yang indah!" << std::endl;
return 0;
}

Perhatikan bagaimana kita menggunakan std::getline() untuk membaca seluruh baris masukan, termasuk spasi.

  1. Operasi string:

Kelas std::string menyediakan banyak fungsi anggota yang berguna. Berikut adalah beberapa yang umum:

Fungsi Deskripsi Contoh
length() atau size() Dapatkan panjang string int len = str.length();
empty() Periksa jika string kosong if (str.empty()) { ... }
append() atau += Menambahkan ke string str.append(" World"); atau str += " World";
substr() Dapatkan substring std::string sub = str.substr(0, 5);
find() Temukan substring size_t pos = str.find("hello");
replace() Ganti bagian string str.replace(0, 5, "Hi");

mari kita gunakan ini dalam program:

#include <iostream>
#include <string>

int main() {
std::string sentence = "The quick brown fox jumps over the lazy dog";

std::cout << "Panjang kalimat: " << sentence.length() << std::endl;

if (!sentence.empty()) {
std::cout << "Kalimat ini tidak kosong." << std::endl;
}

sentence += "!";  // Menambahkan tanda seru
std::cout << "Kalimat yang diperbarui: " << sentence << std::endl;

std::string sub = sentence.substr(4, 5);  // Dapatkan "quick"
std::cout << "Substring: " << sub << std::endl;

size_t fox_pos = sentence.find("fox");
if (fox_pos != std::string::npos) {
std::cout << "Menemukan 'fox' di posisi: " << fox_pos << std::endl;
}

sentence.replace(fox_pos, 3, "cat");
std::cout << "Setelah penggantian: " << sentence << std::endl;

return 0;
}

Program ini menunjukkan berbagai operasi string seperti mendapatkan panjang, memeriksa kosong, menambahkan, mengambil substring, menemukan, dan mengganti.

Membandingkan string gaya C dan std::string

Meskipun string gaya C masih digunakan dalam beberapa konteks (terutama saat berinteraksi dengan kode C), std::string biasanya lebih disukai dalam C++ modern karena beberapa alasan:

  1. Manajemen memori otomatis
  2. Lebih aman dan mudah digunakan
  3. Operasi yang lebih mudah (seperti penggabungan dengan operator +)
  4. Set luas fungsi anggota

Ini adalah perbandingan cepat:

// String gaya C
char cstr1[20] = "Hello";
char cstr2[20];
strcpy(cstr2, cstr1);  // Menyalin
strcat(cstr1, " World");  // Menggabungkan

// std::string
std::string str1 = "Hello";
std::string str2 = str1;  // Menyalin
str1 += " World";  // Menggabungkan

Seperti yang Anda lihat, operasi std::string lebih intuitif dan kurang berisiko kesalahan.

Kesimpulan

Selamat! Anda telah mengambil langkah pertama ke dunia string dalam C++. Kita telah melihat string gaya C, yang masih penting untuk diketahui, dan kelas std::string yang lebih modern dan mudah.

Ingat, latihan membuat sempurna. Cobalah menulis beberapa program menggunakan kedua jenis string untuk menguatkan apa yang Anda pelajari. Sebelum Anda tahu, Anda akan menjadi ahli memanipulasi string seperti yang terbaik!

Terus coding, terus belajar, dan terutama, bersenang-senang! Siapa tahu, mungkin suatu hari Anda akan menulis library string sendiri. Sampai saat itu, selamat coding!

Credits: Image by storyset