akhir. Jika tidak dikehendaki maka programer bisa menggunakan pengaturan default untuk menuju baris baru (‘\n’)
12.5. Pembacaan String
Untuk membaca gaya bahasa string pada C, dapat menggunakan fungsi getline. Fungsi ini dapat didefinisikan sebagai berikut:
istream& getline(char *buffer, int len, chardelim='\n')
dimana parameter-parameter pada fungsi ini antara lain: 1. Buffer, gaya bahasa string, dimana string disimpan setelah dilakukan pembacaan 2. Len, panjang buffer yang digunakan dalam byte. Fungsi ini akan membaca sampai len-1 byte data menuju buffer. Parameter ini biasanya disebut dengan sizeof(buffer) 3. Delim, yaitu karakter yang digunakan. Fungsi ini akan mengembalikan referensi menjadi file masukan. Kemudian fungsi ini akan membaca terus-menerus sampai ditemukan tanda karakter akhir baris (‘\n’). karakter tanda akhir baris ini tidak disimpan dalam buffer, yang disimpan sebagai akhir string adalah jika ditemukan tanda bahwa string telah berakhir (‘\0’). Perhatikan contoh dibawah ini:
charbuffer[30]; cin.getline(buffer,sizeof(buffer));
Fungsi untuk file keluaran adalah sama dengan file masukan, sebagai contoh pada deklarasi dibawah ini:
ofstreamout_file("out.dat");
deklarasi diatas merupakan membuat/menulis file dengan nama out.dat dan dalam penulisan nama juga diperbolehkan mnulis dengan nama seperti out_file. Pada kenyataanya, construktor dapat mengambil dua argumen tambahan. Definisi penuh dari file keluaran construktor adalah:
ofstream::ofstream(const char *name, intmode=ios::out, intprot=filebuf::openprot);
dimana parameter-parameter pada fungsi ini adalah: Name, nama dari nama file yang ditulis Mode, merupakan sekumpulan flag/tanda O merah bersama- sama bahwa hal tersebut merupakan mode open. Flag ios::out dibutuhkan sebagai file keluaran. Flag-flag lain yang dibutuhkan seperti dalam tabel dibawah ini.
Tabel 12.2.Open Flag
FLAG ARTI ios::appmenambahkandatakeakhiroutputfile. ios::atePergikeakhirfileketikadibuka. ios::inMembukauntukmasukan(harusdiberikankepadafungsibuka ifstreamvariabel). ios::outBukafileuntukoutput(harusdiberikankepadafungsianggota bukaofstreamvariabel). ios::binaryFilebinary(jikatidakada,makafiledibukasebagaifileASCII). ios::truncMembuangisiyangadasaatmembukafileuntukmenulis. ios::nocreateMengalamigagaljikafiletersebuttidakada.(Outputfilesaja. Membukasebuahfileinputselalugagaljikatidakadafile.). ios::noreplaceJangan menimpa file yang ada. Jika file ada, menyebabkan rusakketikabuka.
Prot, file protection dimana hal ini tergantung pada sistem operasi yang digunakan untuk menentukan mode proteksi file tersebut. Misalnya pada UNIX proteksi default sampai 0644 untuk baca/tulis sendiri, baca pada group maupun penulisan lainnya, sedangkan MS-DOS/windows defaultnya adalah 0 dalam kondisi file normal. Perhatikan contoh pernyataan dibawah ini:
ofstreamout_file("data.new", ios::out|ios::binary|ios::nocreate| ios::app);
potongan pogram diatas dapat diartikan digunakan menambahkan (ios::app) data biner menggunakan (ios::binary), kalau file sudah ada atau telah ditemukan filenya (ios::nocreate) sedangkan data.new merupakan nama file yang akan ditulis. Pada contoh dibawah terdiri dari fungsi pendek tersebut digunakan untuk menulis pesan pada sebuah file catatan. Sesuatu yang pertama yang dilakukan adalah membuka fungsi untuk operasi output (ios::out), menambahkan catatan (ios::app), dengan menulis dari permulaan sampai akhir penulisan (ios::ate). Setelah fungsi tersebut menulis pesan serta terahir menutup file. Fungsi ini telah dirancang dengan sederhana, dimana hal tersebut juga tidak memperdulikan mengenai efisiensi dan sebagai hasil dari fungsi adalah sangat tidak efisien. Masalah tersebut dibuka dan ditutup setiap saat memanggil log_message. Membuka file merupakan sebuah operasi yang cukup mahal, dan sesuatu juga harus mempunyai kecepatan lebih tinggi, jika akan membuka file hanya sekali dan mengingatkan tersebut.
Next read halaman 6.