Operator Penyisipan dan Ekstraksi Aliran
Ajarkan tipe Anda agar dapat berinteraksi dengan std::cout melalui >
Operator Penyisipan dan Ekstraksi Aliran adalah pelajaran C++ Academy gratis di CoddyKit. Ini adalah pelajaran 2 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.
Mengapa Membebani << dan >>
Ajarkan tipe Anda untuk berinteroperasi dengan std::cout dan std::cin dengan membebani operator aliran.
Operator Penyisipan <<
Definisikan sebagai fungsi bebas yang menerima aliran keluaran melalui referensi. Kembalikan aliran tersebut agar operasi dapat dirangkai.
struct Point { int x, y; };
std::ostream& operator<<(std::ostream& os, const Point& p) {
return os << "(" << p.x << ", " << p.y << ")";
}
Point p{3, 4};
std::cout << p << "\n"; // (3, 4)Mengapa Fungsi Bebas?
Jika Anda menulisnya sebagai anggota, operan kiri harus berupa Point—hal itu mustahil karena kita memerlukan std::ostream di sebelah kiri. Fungsi bebas mendukung kedua susunan operan.
Operator Ekstraksi >>
Definisikan untuk membaca dari aliran masukan. Validasi masukan dan tetapkan bit kegagalan jika terjadi kegagalan.
std::istream& operator>>(std::istream& is, Point& p) {
char open, comma, close;
is >> open >> p.x >> comma >> p.y >> close;
if (open != '(' || comma != ',' || close != ')')
is.setstate(std::ios::failbit);
return is;
}Mengatur Status Kegagalan Aliran
Jika penguraian gagal, panggil is.setstate(std::ios::failbit). Pemanggil dapat mendeteksi kegagalan dengan !is atau is.fail().
Deklarasi Friend
Jika operator memerlukan akses ke anggota privat, deklarasikan operator tersebut sebagai friend di dalam kelas.
class Point {
int x_, y_;
public:
friend std::ostream& operator<<(std::ostream& os, const Point& p);
};Tipe Aliran Bertemplat
Untuk portabilitas maksimum, gunakan templat pada tipe karakter. Ini berguna untuk aliran karakter lebar.
template <typename CharT>
std::basic_ostream<CharT>& operator<<(
std::basic_ostream<CharT>& os, const Point& p) {
return os << "(" << p.x << ", " << p.y << ")";
}Perangkaian
Mengembalikan aliran memungkinkan pengguna merangkai operasi.
std::cout << "Result: " << point << ", distance: " << dist;Pemformatan Khusus
Gunakan std::ios::fmtflags atau std::format C++20 untuk pemformatan tingkat lanjut. Aliran lebih sederhana, tetapi lebih sulit dilokalkan.
Keluaran Bergaya JSON
Anda dapat menggabungkan berbagai pilihan pemformatan dalam operator Anda. Untuk keluaran yang kompleks, tulislah fungsi pembantu.
Membaca Beberapa Baris
Gunakan std::getline untuk membaca berbasis baris, lalu uraikan dengan stringstream—cara ini membuat operator>> Anda tetap sederhana.
Tip Performa
Untuk pencatatan log dengan laju pemrosesan sangat tinggi, pilih pustaka khusus (spdlog, fmt)—performanya jauh lebih baik daripada aliran.
Pemeriksaan Singkat
Mengapa operator<< untuk tipe yang ditentukan pengguna didefinisikan sebagai fungsi bebas, bukan anggota?
Ringkasan
Bebani operator<< dan operator>> sebagai fungsi bebas yang menerima aliran melalui referensi. Kembalikan aliran tersebut agar operasi dapat dirangkai. Tetapkan bit kegagalan jika terjadi kesalahan penguraian. Gunakan friend jika diperlukan akses privat.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Operator Penyisipan dan Ekstraksi Aliran” gratis?
Ya — teks lengkap “Operator Penyisipan dan Ekstraksi Aliran” 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 “Operator Penyisipan dan Ekstraksi Aliran”?
Ajarkan tipe Anda agar dapat berinteraksi dengan std::cout melalui > 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 2 dari 4.
Berapa lama pelajaran “Operator Penyisipan dan Ekstraksi Aliran” 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
- Operator Aritmetika dan Perbandingan
- Operator Penyisipan dan Ekstraksi Aliran
- Operator Subskrip dan Pemanggilan Fungsi
- Operator Perbandingan Tiga Arah C++20