Berkas dan Stream C++
Halo, para pemrogram masa depan! Hari ini, kita akan memulai perjalanan yang menarik ke dunia berkas dan stream C++. Sebagai guru ilmu komputer yang ramah di lingkungan Anda, saya disini untuk mengajarkan Anda dalam petualangan ini. percayalah, pada akhir pelajaran ini, Anda akan mengelola berkas seperti seorang profesional!
Membuka Berkas
Mari kita mulai dengan dasar-dasar. Bayangkan Anda memiliki rakit penyimpanan (itu adalah berkas kita) dan Anda perlu membukanya untuk either menaruh sesuatu di dalamnya atau mengambil sesuatu dari dalamnya. Di C++, kita menggunakan sesuatu yang disebut "stream" untuk berinteraksi dengan berkas.
Untuk membuka berkas, kita menggunakan kelas ifstream
untuk membaca (input) dan kelas ofstream
untuk menulis (output). Jika Anda ingin melakukan keduanya, Anda dapat menggunakan kelas fstream
.
Berikut ini cara membuka berkas:
#include <fstream>
#include <iostream>
using namespace std;
int main() {
ofstream myFile("treasure.txt");
if (myFile.is_open()) {
cout << "Rakit penyimpanan sudah terbuka!" << endl;
} else {
cout << "Oh tidak! Kita tidak dapat membuka rakit penyimpanan." << endl;
}
return 0;
}
Dalam contoh ini, kita mencoba membuka berkas dengan nama "treasure.txt" untuk menulis. Fungsi is_open()
memeriksa apakah berkas berhasil dibuka.
Menutup Berkas
Setelah kita selesai dengan rakit penyimpanan kita, baik (dan merupakan praktek yang baik) untuk menutupnya. Di C++, berkas secara otomatis ditutup saat objek stream berkas keluar dari lingkungan, tetapi lebih baik untuk menutupnya secara eksplisit:
myFile.close();
Menulis ke Berkas
Sekarang bahwa kita telah membuka rakit penyimpanan kita, mari kita taruh beberapa harta di dalamnya! Menulis ke berkas adalah semudah menggunakan operator <<
:
ofstream myFile("treasure.txt");
if (myFile.is_open()) {
myFile << "Emas: 100" << endl;
myFile << "Tongkat ajaib: 3" << endl;
myFile << "Telur naga: 1" << endl;
cout << "Harta ditambahkan ke rakit penyimpanan!" << endl;
} else {
cout << "Gagal membuka rakit penyimpanan." << endl;
}
myFile.close();
Dalam contoh ini, kita menulis tiga baris ke berkas kita. Setiap <<
operator menulis teks berikut ke berkas, dan endl
menambahkan baris baru.
Membaca dari Berkas
Membaca dari berkas adalah seperti mengambil inventaris rakit penyimpanan kita. Kita menggunakan kelas ifstream
dan operator >>
untuk membaca dari berkas:
#include <string>
ifstream myFile("treasure.txt");
string line;
if (myFile.is_open()) {
while (getline(myFile, line)) {
cout << line << endl;
}
myFile.close();
} else {
cout << "Tidak dapat membuka rakit penyimpanan." << endl;
}
Di sini, kita menggunakan getline()
untuk membaca setiap baris dari berkas dan mencetaknya ke konsol. Perulangan while
terus berlanjut sampai kita mencapai akhir berkas.
Contoh Baca dan Tulis
Mari kita gabungkan pembacaan dan penulisan dalam contoh yang lebih kompleks. Kita akan membuat program yang mengelola inventaris harta kita:
#include <fstream>
#include <iostream>
#include <string>
using namespace std;
int main() {
// Menulis ke berkas
ofstream outFile("inventory.txt");
if (outFile.is_open()) {
outFile << "Emas: 100" << endl;
outFile << "Tongkat ajaib: 3" << endl;
outFile << "Telur naga: 1" << endl;
outFile.close();
cout << "Inventaris disimpan!" << endl;
} else {
cout << "Tidak dapat menyimpan inventaris." << endl;
return 1;
}
// Membaca dari berkas
ifstream inFile("inventory.txt");
string item;
int count;
if (inFile.is_open()) {
cout << "Inventaris saat ini:" << endl;
while (inFile >> item >> count) {
cout << item << " " << count << endl;
}
inFile.close();
} else {
cout << "Tidak dapat membaca inventaris." << endl;
return 1;
}
return 0;
}
Dalam contoh ini, kita terlebih dahulu menulis inventaris kita ke berkas, kemudian membacanya kembali dan menampilkan itu. Perhatikan bagaimana kita menggunakan >>
untuk membaca kata dan angka secara terpisah.
Penunjuk Posisi Berkas
Bayangkan Anda membaca sebuah buku dan ingin mengejar tempat Anda saat ini. Penunjuk posisi berkas melakukan hal yang sama untuk berkas. Mereka mengejar tempat kita di berkas.
Berikut beberapa fungsi yang berguna untuk bekerja dengan penunjuk posisi berkas:
Fungsi | Deskripsi |
---|---|
tellg() |
Mengembalikan posisi saat ini dari penunjuk get (untuk input) |
tellp() |
Mengembalikan posisi saat ini dari penunjuk put (untuk output) |
seekg() |
Mengatur posisi penunjuk get |
seekp() |
Mengatur posisi penunjuk put |
Lihatlah contoh berikut:
#include <fstream>
#include <iostream>
using namespace std;
int main() {
fstream file("peta_harta.txt", ios::in | ios::out);
if (!file.is_open()) {
cout << "Gagal membuka peta harta!" << endl;
return 1;
}
// Menulis ke berkas
file << "X menandakan tempat itu!";
// Pindah ke awal berkas
file.seekg(0, ios::beg);
// Baca konten
string content;
getline(file, content);
cout << "Peta mengatakan: " << content << endl;
// Pindah 2 karakter dari awal
file.seekp(2, ios::beg);
// Timpa bagian konten
file << "tidak selalu menandakan";
// Pindah ke awal dan baca lagi
file.seekg(0, ios::beg);
getline(file, content);
cout << "Sekarang peta mengatakan: " << content << endl;
file.close();
return 0;
}
Dalam contoh ini, kita menulis ke berkas, kemudian membacanya, kemudian mengubah bagian dari konten, dan akhirnya membacanya lagi. Itu seperti kita memperbarui peta harta kita!
Dan itu untuk Anda, para penjelajah berani dunia C++! Anda telah belajar bagaimana membuka rakit penyimpanan (berkas), menyimpan harta Anda (menulis data), mengambil inventaris (membaca data), dan bahkan memperbarui peta harta Anda (mengubah isi berkas). Ingat, praktek membuat perfect, jadi terus kode dan jelajahi. Siapa tahu apa saja harta digital yang Anda temukan berikutnya? Happy coding!
Credits: Image by storyset