Mengapa string_view
Hindari penyalinan string
Mengapa string_view adalah pelajaran C++ Academy gratis di CoddyKit. Ini adalah pelajaran 1 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.
Biaya Penyalinan
Meneruskan std::string berdasarkan nilai menyalin seluruh penyangga. Untuk akses baca saja, penyalinan tersebut merupakan pekerjaan yang sia-sia. std::string_view adalah tampilan ringan tanpa kepemilikan, yang hanya terdiri dari penunjuk dan panjang. Sertakan <string_view>.
#include <iostream>
#include <string_view>
int main() {
std::string_view sv = "hello";
std::cout << sv << " len=" << sv.size() << "\n";
}Isi Sebuah Tampilan
string_view hanya menyimpan penunjuk ke karakter yang sudah ada dan panjangnya. Tampilan ini tidak memiliki atau menyalin data tersebut.
#include <iostream>
#include <string>
#include <string_view>
int main() {
std::string s = "world";
std::string_view sv = s; // views s, no copy
std::cout << sv << "\n";
}Parameter Hanya-Baca
Menerima std::string_view berarti fungsi Anda dapat bekerja dengan std::string, literal teks, dan larik char tanpa menyalin satu pun di antaranya.
#include <iostream>
#include <string_view>
void greet(std::string_view name) {
std::cout << "Hi, " << name << "\n";
}
int main() {
greet("Ada");
greet(std::string("Bob"));
}Tanpa Alokasi
Membuat tampilan tidak pernah mengalokasikan memori, sehingga tampilan tersebut murah untuk disalin dan diteruskan berdasarkan nilai.
#include <iostream>
#include <string_view>
int main() {
std::string_view a = "constant text";
std::string_view b = a; // trivial copy
std::cout << (a == b) << "\n";
}Substring Murah
substr pada tampilan mengembalikan tampilan lain ke memori yang sama; tidak ada karakter yang disalin.
#include <iostream>
#include <string_view>
int main() {
std::string_view sv = "abcdef";
std::cout << sv.substr(2, 3) << "\n"; // cde
}Membandingkan Tujuan Kinerja
Untuk fungsi yang hanya memeriksa teks, string_view menghindari alokasi memori dinamis dan penyalinan, yang penting dalam perulangan yang sering dijalankan dan penguraian.
Panjang dan Pengindeksan
Tampilan mendukung antarmuka yang sudah dikenal: size(), empty(), pengindeksan, dan iterasi berbasis rentang.
#include <iostream>
#include <string_view>
int main() {
std::string_view sv = "C++";
for (char c : sv) std::cout << c << "-";
std::cout << "\n" << sv.size() << "\n";
}Tampilan Bersifat Hanya-Baca
Anda tidak dapat mengubah karakter melalui string_view; tampilan ini hanya memberikan akses baca. Untuk mengubahnya, Anda memerlukan string yang memiliki datanya.
Dari Literal ke Tampilan
Literal string dapat langsung dikonversi menjadi tampilan, sehingga meneruskan teks konstan menjadi sangat murah.
#include <iostream>
#include <string_view>
using namespace std::string_view_literals;
int main() {
auto sv = "literal"sv;
std::cout << sv.size() << "\n";
}Bukan Pengganti string
Gunakan std::string ketika Anda perlu memiliki, menyimpan, atau mengubah teks. Gunakan std::string_view untuk parameter sementara yang hanya dibaca.
Catatan tentang Masa Hidup
Karena tampilan tidak memiliki datanya, karakter yang mendasarinya harus tetap hidup lebih lama daripada tampilan. Penyalahgunaan ini menyebabkan tampilan menggantung, yang akan dibahas dalam pelajaran selanjutnya.
Uji Cepat
Periksa pemahaman Anda tentang alasan penggunaan string_view.
Rangkuman
Anda telah mempelajari alasan adanya string_view:
- Merupakan tampilan berupa penunjuk dan panjang tanpa kepemilikan.
- Menerimanya menghindari penyalinan dan alokasi untuk teks yang hanya dibaca.
- Dapat digunakan dengan string, literal, dan larik char.
- Data yang ditampilkan harus tetap hidup lebih lama daripada tampilannya.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Mengapa string_view” gratis?
Ya — teks lengkap “Mengapa string_view” 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 “Mengapa string_view”?
Hindari penyalinan string 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 1 dari 4.
Berapa lama pelajaran “Mengapa string_view” 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