Darsliklar C++ Fayllar

C++ C++ Fayllar

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.

fstreamC++ standart kutubxonasining fayllar bilan ishlash uchun mo’ljallangan sarlavhasi. U uch asosiy klass beradi: ofstream (yozish), ifstream (o’qish) va fstream (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.