12.8. Binary I/O
Input atau output file biner dapat diselesaikan melalui dua fungsi keanggotaan yaitu: read and write. Penulisan atau sintak untuk membaca adalah:
in_file.read(data_ptr,size);
dimana data_ptr merupakan pointer sebagai tempat untuk meletakan data dan size merupakan angka dalam ukuran byte yang akan dibaca. Fungsi keanggotaan qcount akan mengembalikan sejumlah byte data yang telah dibaca pada akhir. Hal ini dimungkinkan akan berkurang diandingkan dengan jumlah byte yang diminta. Sebagai contoh pembacaan yang mungkin ditemui pada akhir file atau ditemukan adanya kesalahan.
struct{ intwidth; intheight; }rectangle; in_file.read(static_cast<char*>(&rectangle),sizeof(rectangle)); if(in_file.bad()){ cerr<<"Tidakdimungkinkanmembacarectangle\n"; exit(8); } if(in_file.gcount()!=sizeof(rectangle)){ cerr<<"Error:tidakbisauntukmembaca\n"; cerr<<"I/Omengalamierror,EOFtidakbisadihitung\n"; }
Dalam contoh program diatas ketika sedang membaca sebuah struktur persegi panjang. Sebuah operator & akan membuat persegi panjang tersebut manuju sebuah pointer. Kemudian sebuah sintak static_cast<char *> dibutuhkan setelah read menginginkan sebuah deretan array. Sebuah operator sizeof digunakan untuk menentukan berapa banyak byte yang dibaca sebaik pengecekan tersebut sampai operasi tersebut menjadi berhasil. Sebuah keanggotaan fungsi write telah memanggil secara sekuensial sama dengan operasi read adalah dengan sintak: out_file.write(data_ptr,size);
12.9. Buffer
Buffer atau sering kita artikan sebagai penahan atau penyangga suatu memori sebuah data. Penyangga sebuah I/O tidak bisa ditulis secara langsung pada sebuah file. Sebuah data akan dijaga keberadaanya dalam sebuah buffer sampai disana cukup untuk menulis.
Next read halaman 10.