Algoritme String
Cari dan pecah secara efisien
Algoritme String adalah pelajaran C++ Academy gratis di CoddyKit. Ini adalah pelajaran 4 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar C++ Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus C++ Academy mencakup 4 pelajaran total.
Mencari dengan find
find mengembalikan indeks substring atau npos jika tidak ada, dan bekerja langsung pada tampilan tanpa penyalinan.
#include <iostream>
#include <string_view>
int main() {
std::string_view sv = "key=value";
auto pos = sv.find('=');
std::cout << pos << "\n"; // 3
}Memeriksa npos
Selalu bandingkan hasil pencarian dengan std::string_view::npos sebelum menggunakannya sebagai indeks.
#include <iostream>
#include <string_view>
int main() {
std::string_view sv = "abc";
if (sv.find('z') == std::string_view::npos)
std::cout << "not found\n";
}Pemeriksaan Awalan dan Akhiran
starts_with dan ends_with (C++20) memperjelas maksud dan menghindari perbandingan substring secara manual.
#include <iostream>
#include <string_view>
int main() {
std::string_view sv = "report.pdf";
std::cout << sv.starts_with("report") << "\n";
std::cout << sv.ends_with(".pdf") << "\n";
}Mengekstrak Sebuah Bidang
Gabungkan find dengan substr untuk memisahkan pasangan kunci/nilai tanpa mengalokasikan string baru.
#include <iostream>
#include <string_view>
int main() {
std::string_view sv = "name=Ada";
auto eq = sv.find('=');
std::cout << sv.substr(0, eq) << " : " << sv.substr(eq + 1) << "\n";
}Memisahkan berdasarkan Pembatas
Anda dapat menelusuri bagian-bagian teks dengan berulang kali mencari pembatas dan mengambil sub-tampilan; setiap bagian hanyalah sebuah tampilan.
#include <iostream>
#include <string_view>
int main() {
std::string_view sv = "a,b,c";
size_t start = 0, pos;
while ((pos = sv.find(',', start)) != std::string_view::npos) {
std::cout << sv.substr(start, pos - start) << "\n";
start = pos + 1;
}
std::cout << sv.substr(start) << "\n";
}Mencari dari Akhir
rfind mencari dari arah belakang, berguna untuk mendapatkan ekstensi berkas atau pemisah terakhir.
#include <iostream>
#include <string_view>
int main() {
std::string_view path = "/usr/local/bin";
auto slash = path.rfind('/');
std::cout << path.substr(slash + 1) << "\n"; // bin
}Menghapus Spasi Kosong
Gunakan find_first_not_of dan find_last_not_of bersama remove_prefix/remove_suffix untuk menghapus spasi kosong, semuanya tanpa penyalinan.
#include <iostream>
#include <string_view>
int main() {
std::string_view sv = " hi ";
sv.remove_prefix(sv.find_first_not_of(" "));
sv.remove_suffix(sv.size() - 1 - sv.find_last_not_of(" "));
std::cout << "[" << sv << "]\n"; // [hi]
}Membandingkan Tampilan
Tampilan mendukung == dan compare untuk perbandingan leksikografis, dengan membandingkan karakter, bukan penunjuk.
#include <iostream>
#include <string_view>
int main() {
std::string_view a = "apple", b = "apple";
std::cout << (a == b) << "\n"; // 1
}Menghitung Kemunculan
Perulangan dengan find yang bergerak melewati setiap hasil temuan dapat menghitung berapa kali suatu karakter atau substring muncul.
#include <iostream>
#include <string_view>
int main() {
std::string_view sv = "mississippi";
int count = 0;
for (size_t p = sv.find('s'); p != std::string_view::npos; p = sv.find('s', p + 1)) ++count;
std::cout << count << "\n"; // 4
}Algoritme Tetap Bebas Alokasi
Semua operasi ini bekerja pada penyangga dasar yang sama. Bagian-bagian teks dan hasil pemangkasan merupakan sub-tampilan; tidak ada alokasi memori dinamis sampai Anda membuat std::string.
Perhatikan Masa Hidup
Sub-tampilan yang dihasilkan algoritme ini memiliki masa hidup yang sama dengan penyangga asli. Jangan biarkan sub-tampilan tersebut hidup lebih lama daripada string sumber.
Uji Cepat
Periksa pemahaman Anda tentang algoritme string_view.
Rangkuman
Anda telah mempelajari algoritme string pada tampilan:
find/rfindmengembalikan posisi ataunpos.starts_with/ends_withmemeriksa awalan dan akhiran.- Pemisahan, pemangkasan, dan pembuatan bagian-bagian teks menghasilkan sub-tampilan tanpa alokasi.
- Sub-tampilan memiliki masa hidup yang sama dengan sumbernya; waspadai tampilan yang menggantung.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Algoritme String” gratis?
Ya — teks lengkap “Algoritme String” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus C++ Academy, upgrade ke CoddyKit PRO. Kursus C++ Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Algoritme String”?
Cari dan pecah secara efisien Kamu berlatih C++ Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai C++ Academy?
Tidak diperlukan pengalaman sebelumnya. C++ Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 4 dari 4.
Berapa lama pelajaran “Algoritme String” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran C++ Academy ini?
Ya. Setiap pelajaran C++ Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Mengapa string_view
- Membuat View
- Jebakan dan Masa Hidup
- Algoritme String