Manufaktur industri
Industri Internet of Things | bahan industri | Pemeliharaan dan Perbaikan Peralatan | Pemrograman industri |
home  MfgRobots >> Manufaktur industri >  >> Industrial programming >> Bahasa C

Menguasai Input/Output File C++: Membaca dan Menulis dengan fstream

Sampai saat ini, kita telah menggunakan library standar iostream, yang menyediakan metode cin dan cout untuk membaca dari masukan standar dan menulis ke keluaran standar masing-masing.

Tutorial ini akan mengajarkan Anda cara membaca dan menulis dari file. Ini memerlukan library standar C++ lain yang disebut fstream, yang mendefinisikan tiga tipe data baru minus–

No.Urut Tipe Data & Deskripsi
1

ofstream

Tipe data ini mewakili aliran berkas output dan digunakan untuk membuat berkas serta menulis informasi ke berkas.

2

ifstream

Tipe data ini mewakili aliran berkas input dan digunakan untuk membaca informasi dari berkas.

3

fstream

Tipe data ini mewakili aliran berkas secara umum, dan memiliki kemampuan baik ofstream maupun ifstream yang berarti dapat membuat berkas, menulis informasi ke berkas, dan membaca informasi dari berkas.

Untuk melakukan pemrosesan berkas dalam C++, file header <iostream> dan <fstream> harus disertakan dalam file sumber C++ Anda.

Membuka Berkas

Sebuah berkas harus dibuka sebelum Anda dapat membaca dari atau menulis ke dalamnya. Objek ofstream atau fstream dapat digunakan untuk membuka berkas untuk penulisan. Dan objek ifstream digunakan untuk membuka berkas hanya untuk tujuan pembacaan.

Berikut adalah sintaks standar untuk fungsi open(), yang merupakan anggota objek fstream, ifstream, dan ofstream.

 void open(const char *filename, ios::openmode mode); 

Di sini, argumen pertama menentukan nama dan lokasi berkas yang akan dibuka dan argumen kedua dari fungsi anggota open() menentukan mode di mana berkas harus dibuka.

No.Urut Flag Mode & Deskripsi
1

ios::app

Mode tambah. Semua output ke berkas tersebut akan ditambahkan di akhir.

2

ios::ate

Buka berkas untuk output dan pindahkan kontrol baca/tulis ke akhir berkas.

3

ios::in

Buka berkas untuk pembacaan.

4

ios::out

Buka berkas untuk penulisan.

5

ios::trunc

Jika berkas sudah ada, isinya akan dipotong sebelum membuka berkas.

Anda dapat menggabungkan dua atau lebih nilai ini dengan OR-kan bersama-sama. Contohnya jika Anda ingin membuka berkas dalam mode tulis dan ingin memotongnya jika sudah ada, berikut akan menjadi sintaks minus–

 ofstream outfile; outfile.open("file.dat", ios::out | ios::trunc ); 

Cara serupa, Anda dapat membuka berkas untuk pembacaan dan penulisan sebagai berikut minus–

 fstream afile; afile.open("file.dat", ios::out | ios::in ); 

Menutup Berkas

Saat program C++ diakhiri, secara otomatis membersihkan semua aliran, melepaskan semua memori yang dialokasi dan menutup semua berkas yang dibuka. Namun selalu merupakan praktik yang baik agar programmer menutup semua berkas yang dibuka sebelum pengakhiran program.

Berikut adalah sintaks standar untuk fungsi close(), yang merupakan anggota objek fstream, ifstream, dan ofstream.

 void close(); 

Menulis ke Berkas

Saat melakukan pemrograman C++, Anda menulis informasi ke berkas dari program Anda menggunakan operator penyisipan aliran (<<) sama seperti Anda menggunakan operator itu untuk mengeluarkan informasi ke layar. Satu-satunya perbedaan adalah Anda menggunakan objek ofstream atau fstream bukan objek cout.

Membaca dari Berkas

Anda membaca informasi dari berkas ke dalam program Anda menggunakan operator ekstraksi aliran (>>) sama seperti Anda menggunakan operator itu untuk memasukkan informasi dari keyboard. Satu-satunya perbedaan adalah Anda menggunakan objek ifstream atau fstream bukan objek cin.

Contoh Membaca dan Menulis

Berikut adalah program C++ yang membuka berkas dalam mode baca dan tulis. Setelah menulis informasi yang dimasukkan pengguna ke dalam berkas bernama afile.dat, program membaca informasi dari berkas dan menampilkannya di layar minus–

Live Demo
 #include <fstream> #include <iostream> using namespace std; int main () { char data[100]; // buka berkas dalam mode tulis. ofstream outfile; outfile.open("afile.dat"); cout << "Menulis ke berkas" << endl; cout << "Masukkan nama Anda: "; cin.getline(data, 100); // tulis data yang dimasukkan ke dalam berkas. outfile << data << endl; cout << "Masukkan usia Anda: "; cin >> data; cin.ignore(); // tulis lagi data yang dimasukkan ke dalam berkas. outfile << data << endl; // tutup berkas yang dibuka. outfile.close(); // buka berkas dalam mode baca. ifstream infile; infile.open("afile.dat"); cout << "Membaca dari berkas" << endl; infile >> data; // tulis data di layar. cout << data << endl; // baca lagi data dari berkas dan tampilkan. infile >> data; cout << data << endl; // tutup berkas yang dibuka. infile.close(); return 0; } 

Ketika kode di atas dikompilasi dan dieksekusi, menghasilkan contoh masukan dan keluaran berikut minus–

 $./a.out Menulis ke berkas Masukkan nama Anda: Zara Masukkan usia Anda: 9 Membaca dari berkas Zara 9 

Contoh di atas menggunakan fungsi tambahan dari objek cin, seperti fungsi getline() untuk membaca baris dari luar dan fungsi ignore() untuk mengabaikan karakter tambahan yang tertinggal dari pernyataan baca sebelumnya.

Pointer Posisi Berkas

Kedua istream dan ostream menyediakan fungsi anggota untuk memindahkan ulang pointer posisi berkas. Fungsi anggota ini adalah seekg ("seek get") untuk istream dan seekp ("seek put") untuk ostream.

Argumen untuk seekg dan seekp biasanya adalah integer panjang. Argumen kedua dapat ditentukan untuk menunjukkan arah pencarian. Arah pencarian dapat ios::beg (default) untuk penempatan relatif terhadap awal aliran, ios::cur untuk penempatan relatif terhadap posisi saat ini dalam aliran atau ios::end untuk penempatan relatif terhadap akhir aliran.

Pointer posisi berkas adalah nilai integer yang menentukan lokasi dalam berkas sebagai jumlah byte dari lokasi awal berkas. Beberapa contoh penempatan pointer posisi "get" berkas adalah minus–

 // posisi ke byte ke-n dari fileObject (asumsikan ios::beg) fileObject.seekg( n ); // posisi n byte maju dalam fileObject fileObject.seekg( n, ios::cur ); // posisi n byte mundur dari akhir fileObject fileObject.seekg( n, ios::end ); // posisi di akhir fileObject fileObject.seekg( 0, ios::end ); 

Bahasa C

  1. Menguasai Variabel, Literal, dan Konstanta C++: Panduan Lengkap
  2. Kelas & Objek C++: Panduan Praktis Pemrograman Berorientasi Objek
  3. Fungsi Teman dan Kelas Teman C++: Menguasai Kontrol Akses
  4. Penanganan File C: Menguasai I/O dengan fopen, fprintf, fread, dan fseek
  5. Menguasai Operasi Direktori dan File di Python
  6. Struktur vs Kelas C++: Panduan Praktis untuk Pengembang Terintegrasi
  7. Memahami File Header C: Tipe, Penggunaan, dan Praktik Terbaik
  8. Panduan Lengkap Tanggal dan Waktu dalam C++
  9. Menguasai Overloading C++: Fungsi & Operator Dijelaskan
  10. Apa Itu Mill File? Panduan Lengkap Anda untuk Alat Kayu dan Logam Esensial