Fayllar bilan ishlash — ma’lumotni dastur yopilgandan keyin ham saqlab qolish usuli. O’zgaruvchilar dastur tugashi bilan yo’qoladi, fayldagi ma’lumot esa diskda qoladi. Hisobotlar, sozlamalar, loglar — barchasi fayllarda saqlanadi. C++’da bu vazifa uchun <fstream> kutubxonasi ishlatiladi.
fstream — C++ standart kutubxonasining fayllar bilan ishlash uchun mo’ljallangan sarlavhasi. U uch asosiy klass beradi:
ofstream(yozish),ifstream(o’qish) vafstream(ikkalasi).
Faylga yozish — ofstream
Faylga yozish uchun ofstream obyekti yaratiladi. << operatori xuddi cout kabi ishlaydi:
#include <iostream>
#include <fstream>
using namespace std;
int main() {
ofstream fayl("hisobot.txt");
fayl << "UzbekDevs hisoboti" << endl;
fayl << "Ball: 95" << endl;
fayl.close();
cout << "Fayl yozildi" << endl;
return 0;
}
Fayl yozildi
ofstream fayl("hisobot.txt") faylni yozish uchun ochdi (agar yo’q bo’lsa, yaratadi). << bilan matn yozdik, close() esa faylni yopib, ma’lumotni diskka to’liq saqladi. Faylni yopishni unutmang.
Fayldan o’qish — ifstream
Faylni o’qish uchun ifstream ishlatiladi. >> operatori qiymatlarni o’qiydi:
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main() {
ifstream fayl("hisobot.txt");
string qator;
while (getline(fayl, qator)) {
cout << qator << endl;
}
fayl.close();
return 0;
}
UzbekDevs hisoboti
Ball: 95
getline(fayl, qator) faylni qatorma-qator o’qiydi va fayl tugaganda while sikli to’xtaydi. Bu — butun faylni xavfsiz o’qishning eng keng tarqalgan naqshi.
Ochish rejimlari
Fayl turli maqsadlarda ochiladi. Asosiy rejimlarni jadvalda ko’ramiz:
| Rejim | Klass | Vazifasi |
|---|---|---|
| Yozish | ofstream |
eski tarkibni o’chirib yozadi |
| O’qish | ifstream |
faqat o’qiydi |
| Qo’shish | ofstream + ios::app |
oxiriga qo’shadi |
Mavjud faylga qo’shish uchun ios::app rejimi ishlatiladi:
#include <iostream>
#include <fstream>
using namespace std;
int main() {
ofstream fayl("hisobot.txt", ios::app);
fayl << "Yangi yozuv qo'shildi" << endl;
fayl.close();
cout << "Qo'shildi" << endl;
return 0;
}
Qo'shildi
ios::app (append) yozuvni fayl oxiriga qo’shdi, eski tarkibga tegmadi. Log fayllari aynan shu rejimda yoziladi.
Faylni tekshirish
Mavjud bo’lmagan faylni o’qishga urinsangiz, xato yuzaga keladi. Shuning uchun fayl muvaffaqiyatli ochilganini tekshirish — professional yondashuv:
#include <iostream>
#include <fstream>
using namespace std;
int main() {
ifstream fayl("yoq.txt");
if (!fayl) {
cout << "Xato: fayl topilmadi" << endl;
return 1;
}
fayl.close();
return 0;
}
Xato: fayl topilmadi
if (!fayl) fayl ochilmaganini tekshiradi. Bu tekshiruv dasturni kutilmagan xatolardan himoya qiladi.
Xulosa
Bu bo’limda ofstream bilan yozish, ifstream bilan o’qish, getline orqali qatorma-qator o’qish, ios::app bilan qo’shish va faylni tekshirishni ko’rib chiqdik. Fayllar — ma’lumotni doimiy saqlashning asosi. Keyingi darsda xatolarni boshqarish — try va catch bilan bu C++ qo’llanmasini yakunlaymiz.