Matin va binar fayillar bilan ishlash.
MAVZU: Matin va binar fayillar bilan ishlash. Reja: 1. Matinlar va binary fayillarni yaratish. 2. Fayllar bilan ishlash uchun quyidagi sifnlar ob'ektlari. 3. Fayillar bilan ishlashga doir misollar bilan tanishish.
Matnli fayllar bilan ishlash binar fayllar bilan ishlashdan bir oz farq qiladi. Matnli fayllarda ma`lumotlar satrlarda saqlanadi. Matnli fayl elementilari har xil uzunlikdagi satrlardir. Bu satrlar bir biridan satr oxiri belgisi bilan ajratiladi. Matnli fayl elementlari indekslanmagan bo`lganligi uchun, faylning istalgan elementiga bevosita murojaat qilib bo`lmaydi. C++ da matnli yoki binar fayllar bilan ishlash uchun keng imkoniyatlar berilgan. Matnli fayllar bilan ishlashda oddiy C ning funksiyalaridan ham foydalanish mumkin. Masalan, formatli o'qish va yozish funksiyalari yoki oldingi mavzudagi funksiyalardan foydalanishimiz mumkin. Matnli fayllar bilan ishlashning bunday usuli kitoblarda keng yoritilgan. Ularni mustaqil o'qib - o'rganishingiz mumkin. Bu mavzu fayllar bilan ishlovchi oqimlarni qisqacha o'rganamiz va buni matnli fayl misolida ko'ramiz. Standart kiritish / chiqarish kutubxonasi sinflari quyidagicha shajaraga ega: Fayllar bilan ishlash uchun quyidagi sifnlar ob'ektlari hosil qilinadi: ofstream - faylga ma'lumot yozish uchun ifstream - fayldan ma'lumot o'qish uchun fstream - fayldan ma'lumot o'qish uchun va yozish uchun Bu sinflarni dasturda ishlatish uchun <fstream.h> sarlavha faylini qo'shish kerak bo'ladi. Bundan keyin programmada aniq fayllar oqimini aniqlash mumkin. Masala: ofstream yozish; // faylga yozish oqimini e'lon qilish ifstream oqish; // fayldan o'qish oqimini e'lon qilish fstream yoz_oqi; // faylga yozish va o'qish oqimini e'lon qilish Keyin faylni ochish kerak bo'ladi. Faylni ochish deganda, uning ustida nima amal qilinishi haqida amaliyot tizimiga xabar
berish tushuniladi. void open (const char * filename, ios_base::openmode mode = ios_base::out ); mode parametri quyidagicha qiymatlarni qabul qilishi mumkin: ios::in faqat ma'lumot o'qish uchun ios::out faqat ma'lumot yozish uchun faylni ochishda fayl ko'rsatkichini fayl oxiriga ios::ate qo'yish ios::app fayl oxiriga ma'lumotlarni yozish uchun ios::trunc bor bo'lgan faylning ustidan yangi faylni yozish ios::binary binar holda ma'lumotlarni almashish uchun Har bir sinf uchun mode parametrining odatiy qiymatlari mavjud: class default mode parameter ofstream ios::out ifstream ios::in fstream ios::in | ios::out Fayl ustida o'qish yoki yozish amalini bajarib bo'lgandan song, faylni yopish kerak bo'ladi. Faylni yopish uchun close funksiyadi ishlatiladi. Masalan: yozish.close(); oqish.close(); Misollar va fuksiyalar. Matnli faylga ma'lumot yozish
#include <iostream.h> #include <fstream.h> int main () { ofstream yozish; // faylga yozish oqimini hosil qilish yozish.open("namuna.txt"); // yangi namuna.txt nomli fayl hosil qilinadi. // agar namuna.txt fayli oldindan bo'lsa, // uning eski qiymatlari o'chiriladi // va yangi fayl hosil qilinadi yozish << "Matnli faylga ma'lumot yozish" << endl; yozish << "Juda oson!" << endl; yozish.close(); // faylni yopish system ("pause"); return 0; } Fayldan matni o'qish #include <iostream.h> #include <fstream.h> #include <string.h> int main () { ifstream oqish; // fayldan o'qish oqimini hosil qilish string satr; oqish.open("namuna.txt");
// faylni ochishda xatolik sodir bo'lsa if (!oqish.is_open()) { cout << "Faylni ochishda xatolik sodir bo'ldi." << endl; exit(1); // dasturni tugatish } while (!oqish.eof()) { // fayldan o'qish getline(oqish, satr); // ekranga chiqarish cout << satr << endl; } // namuna.txt fayli bilan oqish oqimi aloqasini uzish oqish.close(); system (“pause”); return 0; } istream sinfi funksiyalari istream& seekg ( streampos pos ); istream& seekg ( streamoff off, ios_base::seekdir dir );; oqish oqimi ko'rsatkichini o'rnatish (siljit ish). pos - oqim buferining yangi pozitsiyasi. dir parametri quyidagilardan birini qabul qilishi mumkin: Qiymat Izoh ios::beg oqimning boshlanishi