Pada prinsipnya operasi yang dilakukan pada file terdiri dari 3 tahapan :
1. Membuka file
2. Melakukan pemrosesan pada file
3. Menutup file
Dalam melakukan operasi file dibutuhkan fungsi-fungsi yang berhubungan dengan operasi
file yang terdapat pada file fstream.h. Oleh sebab itu, untuk dapat melakukan operasi file,
maka preprocessor directive berikut ditambahkan:
#include <fstream.h>
MEMBUKA FILE
Pembukaan dari suatu file mempunyai 2 tujuan, yaitu :
1. Membuka file untuk ditulis/direkam
2. Membuka file untuk dibaca
MENUTUP FILE
Setelah pemrosesan file berakhir, maka file perlu ditutup. Langkah ini dilakukan dengan cara
:
file_objek.close();
Pemakaian fungsi close() sifatnya optional. Bila digunakan fungsi ini maka compiler tidak
akan mengeluarkan pesan error.
FILE TEKS
Contoh :
Buat program C++ untuk menulis kalimat “Belajar File” sebanyak 10 kali dan disimpan
dengan nama file “datateks.txt” dan file objek latihan. Berdasarkan data yang tersimpan
dalam “datatext.txt”tsb, tampilkan isi filenya melalui program input.
PROGRAM C++ :
Setelah program ini dijalankan, maka terbentuk file “datateks.txt” . File ini tersimpan dalam
folder yang sama dengan program ditulis.
Untuk melihat isi file “datateks.txt” dapat menggunakan Notepad:
B. MEMBACA ISI FILE
Contoh : Buatlah pemrograman C++ untuk menulis/merekam data mahasiswa yang terdiri
dari npm, nama mahasiswa dan ipk. Data tsb disimpan dengan nama file objek mhsFile dan
nama file data “datamhs.dat”.
CARA 1 :
A. Menulis / Merekam
#include <iostream.h>
#include <fstream.h>
#include <stdlib.h> // exit
#include <conio.h>
main()
{
ofstream mhsFile ("datamhs.dat", ios::app);
if (!mhsFile)
{
cerr<<"File could not be opened"<<endl;
exit(1);
}
char npm[10];
char nama[20];
float ipk;
while (cin>>npm>>nama>>ipk)
{
mhsFile<<npm<<' '<<nama<<' '<<ipk<<endl;
cout<<"?";
}
getch();
}
Kelemahan cara ini : nama mahasiswa tidak dapat diisikan lebih dari 1 suku kata karena
untuk input datanya menggunakan statement cin.
Setelah program ini dijalankan, maka terbentuk file “datamhs.dat” . File ini tersimpan dalam
folder yang sama dengan program ditulis.
Untuk melihat isi file “datamhs.dat” dapat menggunakan Notepad:
#include <iostream.h>
#include <fstream.h>
#include <stdlib.h>
#include <conio.h>
#include <iomanip.h>
main()
{
ifstream inMhsFile ("datamhs.dat", ios::in);
if (!inMhsFile)
{
cerr<<"File could not be opened"<<endl;
exit(1);
}
char npm[10];
char nama[20];
float ipk;
int no=0;
char pre[20];
cout<<"-----------------------------------------------------------"<<endl;
cout<<setiosflags(ios::left)<<setw(5) << "No."
<<setw(10)<<"NPM" <<setw(20)<<"Nama Mahasiswa"
<<setw(7) <<"IPK"<<setw(20)<<"Prediket"<<endl;
cout<<"-----------------------------------------------------------"<<endl;
while (inMhsFile>>npm>>nama>>ipk)
{
no++;
infoMhs (no,npm,nama,ipk,pre);
}
cout<<"-----------------------------------------------------------"<<endl;
getch();
}
if (ipk>=3.00)
strcpy(pre,"Sangat Memuaskan");
else
if (ipk>=2.50)
strcpy(pre,"Memuaskan");
else
if (ipk>=2.00)
strcpy(pre,"Cukup");
cout<<setiosflags(ios::left)<<setw(5)<<no
<<setw(10)<<npm<<setw(20)<<nama<<setw(7)
<<setprecision(3) <<ipk <<setiosflags(ios::showpoint | ios::left)
<<setw(20)<<pre<<endl;
}
CARA 2 :
A. Menulis/Merekam data
#include <iostream.h>
#include <fstream.h>
#include <stdlib.h>
#include <conio.h>
#include <stdio.h>
#include <string.h>
struct datamhs
{
char npm[10];
char nama[20];
float ipk;
} mhs;
main()
{
ofstream file_mhs ("datamhs.dat", ios::app);
if (!file_mhs)
{
cerr<<"File could not be opened"<<endl;
exit(1); // prototype in stdlib.h
}
char jwb='Y';
#include <iostream.h>
#include <fstream.h>
#include <stdlib.h>
#include <conio.h>
#include <stdio.h>
#include <string.h>
#include <iomanip.h>
void infoMhs();
struct datamhs
{
char npm[10];
char nama[20];
float ipk;
} mhs;
main()
{
ifstream file_mhs ("datamhs.dat", ios::in);
if (!file_mhs)
{
cerr<<"File could not be opened"<<endl;
exit(1);
}
cout<<"-----------------------------------------------------------"<<endl;
cout <<setiosflags(ios::left)<<setw(5)<<"No."
<<setw(10)<<"NPM"
<<setw(20)<<"Nama"<<setw(5) <<"IPK"
<<setw(20)<<"Prediket"<<endl;
cout<<"-----------------------------------------------------------"<<endl;
file_mhs.read((char *)&mhs,sizeof(mhs));
while (!file_mhs.eof())
{
infoMhs();
file_mhs.read((char*)&mhs, sizeof(mhs));
}
cout<<"-----------------------------------------------------------"<<endl;
file_mhs.close();
getch();
}
int no=0;
char pre[20];
void infoMhs()
{
no++;
if (mhs.ipk>=3.00)
strcpy(pre,"Sangat Memuaskan");
else
if (mhs.ipk>=2.50)
strcpy(pre,"Memuaskan");
else
if (mhs.ipk>=2.00)
strcpy(pre,"Cukup");
cout <<setiosflags(ios::left)<<no<<". "
<<setw(10)<<mhs.npm
<<setw(20)<<mhs.nama
<<setw(5) <<setprecision(3)<<setiosflags(ios::showpoint | ios::right)
<<setiosflags(ios::left)<<mhs.ipk<<setw(20)<<pre<<endl;
}
A. Menulis/Merekam data
struct datamhs
{
char npm[10];
char nama[20];
float ipk;
} mhs;
main()
{
ofstream mhsFile ("datamhs.dat", ios::app);
if (!mhsFile)
{
cerr<<"File could not be opened"<<endl;
exit(1); // prototype in stdlib.h
}
char jwb='Y';
cout << "Ada Data Lagi [Y/T] = "; cin >> jwb;
}
mhsFile.close();
}
#include <iostream.h>
#include <fstream.h> // file
#include <stdlib.h> // exit
#include <conio.h>
#include <string.h> // strcpy
#include <iomanip.h> // setiosflag, setw
struct datamhs
{
char npm[10];
char nama[20];
float ipk;
} mhs;
main()
{
ifstream mhsFile ("datamhs.dat", ios::in);
if (!mhsFile)
{
cerr<<"File could not be opened"<<endl;
exit(1);
}
cout<<"-----------------------------------------------------------"<<endl;
cout <<setiosflags(ios::left)<<setw(5)<<"No."
<<setw(10)<<"NPM"
<<setw(20)<<"Nama"<<setw(5) <<"IPK"
<<setw(20)<<"Prediket"<<endl;
cout<<"-----------------------------------------------------------"<<endl;
mhsFile.read((char *)&mhs,sizeof(mhs));
while (!mhsFile.eof())
{
infoMhs();
mhsFile.read((char*)&mhs, sizeof(mhs));
}
cout<<"-----------------------------------------------------------"<<endl;
mhsFile.close();
getch();
}
int no=0;
char pre[20];
void infoMhs()
{
no++;
if (mhs.ipk>=3.00)
strcpy(pre,"Sangat Memuaskan");
else
if (mhs.ipk>=2.50)
strcpy(pre,"Memuaskan");
else
if (mhs.ipk>=2.00)
strcpy(pre,"Cukup");
cout <<setiosflags(ios::left)<<no<<". "
<<setw(10)<<mhs.npm
<<setw(20)<<mhs.nama
<<setw(5) <<setprecision(3)<<setiosflags(ios::showpoint | ios::right)
<< mhs.ipk<< setiosflags(ios::left)<<setw(20)<<pre<<endl;
}