Menguasai Aliran C++: cout, cin, cerr, clog – Panduan Praktis
Apa Itu Aliran dalam C++?
C++ mengabstraksi input dan output melalui keluarga kelas aliran yang mentransfer data sebagai urutan byte. Aliran ini merupakan tulang punggung setiap operasi I/O dalam bahasa.
Aliran terbagi menjadi dua kategori:
Tipe Aliran
Aliran Masukan – Menerima data dari perangkat seperti keyboard atau file dan menempatkannya ke memori.
Aliran Keluaran – Mengirim data dari memori ke perangkat seperti monitor atau file.
Tutorial ini akan mencakup:
Dasar-dasar aliran
Bagaimana aliran bekerja di bawah permukaan
Kelas aliran utama dan fungsi-fungsinya
File header C++ untuk I/O
Menggunakan std::cout, std::cin, std::cerr, dan std::clog
Penanganan kesalahan dengan objek aliran
Bagaimana Aliran Bekerja
Aliran operasi C++ yang umum adalah:
Buat instance objek aliran dengan tipe yang sesuai.
Asosiasikan aliran dengan perangkat atau file menggunakan get/put pointers.
Lakukan I/O melalui operator ekstraksi (>> ) atau penyisipan (<< ).
Ringkasan Fungsi Aliran
Header streambuf menyediakan beberapa kelas yang mengelola buffer file:
Kelas
Deskripsi
filebuf
Mengelola buffer file untuk baca/tulis. Menyediakan open() dan close().
fstreambase
Dasar untuk ifstream, fstream, dan ofstream – operasi aliran file umum.
ifstream
Aliran file masukan untuk membaca data.
ofstream
Aliran file keluaran untuk menulis data.
fstream
Aliran masukan/keluaran gabungan.
File Header C++ untuk I/O
iostream – Menyediakan cin, cout, cerr, dan clog.
iomanip – Menawarkan manipulator seperti setw dan setprecision.
fstream – Menangani aliran berbasis file.
Semua objek ini didefinisikan dalam iostream; menghilangkan header memicu kesalahan kompilasi.
std::cout
Objek cout menulis ke aliran output standar, biasanya konsol. Digunakan dengan operator penyisipan (<<).
Contoh
#include <iostream> using namespace std; int main() { char welcome[] = "Welcome to Guru99"; cout << welcome << endl; return 0; }
Output:
Walk-through kode:
Sertakan iostream untuk mengakses cout.
Gunakan namespace std untuk menghindari awalan.
Definisikan array karakter yang menyimpan pesan.
Cetak pesan dengan endl untuk memasukkan baris baru.
Kembalikan 0 untuk menunjukkan sukses.
std::cin
Objek cin membaca dari aliran masukan standar, biasanya keyboard. Dipasangkan dengan operator ekstraksi (>>).
Contoh
#include <iostream> using namespace std; int main() { int number; cout << "Enter a number:"; cin >> number; cout << "\nYou entered: " << number; return 0; }
Output:
Penjelasan kode:
Sertakan iostream untuk cin dan cout.
Gunakan namespace std.
Deklarasikan variabel integer.
Ajak pengguna.
Baca input dengan >>.
Balikan nilai yang dimasukkan.
Kembalikan 0 pada sukses.
std::cerr
Aliran cerr mengeluarkan pesan kesalahan segera karena tidak di-buffer. Gunakan untuk kesalahan kritis yang harus ditampilkan segera.
Contoh
#include <iostream> using namespace std; int main() { cerr << "An Error occurred!"; return 0; }
Output:
Penjelasan:
Sertakan iostream untuk cerr.
Gunakan namespace std.
Cetak pesan kesalahan segera.
Kembalikan 0.
std::clog
Berbeda dengan cerr, clog di-buffer, menyimpan pesan sampai buffer diluruskan. Berguna untuk pencatatan yang dapat ditunda.
Contoh
#include <iostream> using namespace std; int main() { clog << "An Error occurred!"; return 0; }
Output:
Penjelasan:
Sertakan iostream untuk clog.
Gunakan namespace std.
Tulis pesan kesalahan yang di-buffer.
Kembalikan 0.
Penanganan Kesalahan dengan Objek Aliran
Aliran dapat dievaluasi dalam konteks boolean untuk memeriksa validitasnya. Selain itu, fungsi anggota memberikan pemeriksaan status yang detail:
good() – benar jika tidak ada kesalahan yang terjadi.
bad() – benar jika kesalahan fatal diatur.
fail() – benar setelah operasi yang tidak berhasil.
eof() – benar ketika akhir aliran tercapai.
Contoh – memverifikasi pembukaan file:
ifstream file("myfile.txt"); if (!file) { cout << "File NOT opened!" << endl; }
Contoh – memvalidasi input pengguna:
int p; if (cin >> p) { cout << "Enter valid number" << endl; }
Ringkasan
Dalam C++, I/O dilakukan melalui aliran yang mentransfer urutan byte.
Aliran masukan memindahkan data dari perangkat ke memori; aliran keluaran memindahkan data dari memori ke perangkat.