0Pricing
C++ Academy · Pelajaran

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

  1. Mengapa string_view
  2. Membuat View
  3. Jebakan dan Masa Hidup
  4. Algoritme String
← Kembali ke C++ Academy