6.57.Ardıcıl faylların yaradılmasında istifadə olunan siniflər və funksiyalar
Qeyd edək ki, fayllarla olan giriş/çıxış konsolla olan giriş/çıxışla çox əlaqədardır. Faktiki olaraq fayl giriş/çıxışda konsol giriş/çıxışını təmin edən siniflərin ierarxiyasına əsaslanır. Yəni konsol giriş/çıxış üçün istifadə olunan siniflər fayllara da tətbiq oluna bilər. Bununla belə, faylların emalında əlavə yeni siniflərdən də istifadə oluna bilər.
Faylla olan giriş/çıxışı realizasiya etmək üçün proqrama başlığını qoşmaq lazımdır. başlıq faylında bir neçə sinif – o cümlədən ifstream, ofstream və fstream sinifləri təyin olunmuşdur. Bu siniflər istream və ostream siniflərinin törəmə sinifləridir. istream və ostream sinifləri də öz növbəsində ios sinifinin törəmə sinifləridir. Ona görə də ifstream, ofstream və fstream sinifləri ios sinfi ilə təyin olunan bütün əməliyyatlara müraciət edə bilərlər.
C++ dilində faylın axınla əlaqələnməsi zamanı faylı açılır. Üç növ axın vardır:
Giriş
Çıxış
Giriş/çıxış
Faylı açmaqdan əvvəl axın yaratmaq lazımdır.
Giriş axını yaratmaq üçün ifstream tipli obyekt yaratmaq lazımdır. Çıxış axını yaratmaq üçün ofstream tipli obyekt yaratmaq lazımdır. Həm girişi, həm də çıxışı reallaşdıran axını yaratmaq üçün fstream tipli obyekt yaratmaq lazımdır.
Məsələ, aşağıdaki fraqmentdə bir axın giriş üçün, bir axın çıxış üçün və bir axın eyni zamanda həm giriş, həm də çıxış üçün yaradılır:
ifstream in; // giriş
ofstream out; // çıxış
fstream io; // giriş və çıxış.
Axını yaratdıqdan sonra open( ) funksiyasının köməyi ilə axını faylla əlaqələndirmək lazımdır. Bu funksya aşağıdaki siniflərin üzvləridir:
Void ifstream::open(const char*faylın adı, rejim);
Void ofstream::open(const char*faylın adı, rejim);
Void fstream::open(const char*faylın adı, rejim).
Burada -proqramda élan olunan faylın adıdır. -isə faylın açılması rejimini müəyyən edir və aşağıdaki qiymətləri ala bilər:
ios::app-faylın sonuna əlavə etmə rejimi
ios::in-giriş üçün faylın açılması rejimi
ios::out-çıxış üçün faylın açılması rejimi
ios::ate-faylın açılması zamanı onun sonunun axtarılması rejimi
ios::binary-ikilik rejimdə faylın açılması rejimi
ios::trunc-əvvəlcə mövcud olan faylın məzmununun silinməsi rejimi
parametrini open( ) funksiyasında yazmamaq olar. Bu halda onun qiyməti susma prinsipinə görə başa düşülür. Aşağıdaki fraqmentldə test adlı faylın açılışı göstərilmişdir:
ofstream myfile;
myfile.open(“test”);
Burada parametrinini qiyməti susma prinsipinə görə götürülür. Əgər open( ) funksiyasının yerinə yetirilməsi səhvlə nəticələnərsə axına uyğun olan dəyişən false qiymətinə bərabər olur. Bu faktdan faylın açılmasının düzgünlüyünə nəzarət etmək üçün istifadə etmək olar. Məsələ:
if(!myfile){
cout<<”faylı açmaq mümkün deyildir\n”;
//faylın açılmasındaki səhvi emal edən proqram
}
Qeyd edək ki, ifstream, ofstream, fstream siniflərində faylları avtomatik olaraq açan konstruktorlar vardır. Ona görə də open( ) funksiyasından istifadə etmədən faylların açılmasında aşağıdaki üsuldan da istifadə etmək olar:
ifstream mylife(“mylife1”); //giriş üçün faylın açılması
Faylın bağlanması üçün close( )-üzv funksiyasından istifadə edilir. Məsələ, myfile axını ilə əlaqəli olan faylı bağlamaq üçün
myfile.close( );
-yazmaq lazımdır.
ios sinfinin üzvü eof( ) funksiyasının köməyi ilə faylın sona çatmasını müəyyən etmək olar. Faylın sonu çatdıqda bu funksiya “doğru”, əks “halda” yalan qiymət alır. Fayl açıldıqdan sonra mətn verilənləri fayldan oxumaq və ya fayla yazmaq olar. Sadəcə olaraq konsol giriş/çıxışında olduğu kimi << və >> operatorlardan istifadə etmək və cin və ya cout axınlarını faylla əlaqədar olan axın adları ilə əvəz etmək lazımdır. Qeyd edək ki, fayldan oxumaq və fayla yazmaq üçün C-dilindəki fprintf( ) və fscanf( )-funksiyalarından da istifadə etmək olar.
Dostları ilə paylaş: |