شرح C++

التعامل مع الملفّات

مكتبة fstream

للتعامل مع الملفّات نضمّن <fstream>، ولدينا ثلاثة أصناف:

الصنفالوظيفة
ofstreamالكتابة (output)
ifstreamالقراءة (input)
fstreamالاثنان معًا

الكتابة في ملف

#include <fstream>
using namespace std;

int main() {
    ofstream file("notes.txt");

    if (file.is_open()) {
        file << "السطر الأول" << endl;
        file << "السطر الثاني" << endl;
        file.close();
    }
    return 0;
}

⚠️ افحص is_open() دائمًا، وأغلق الملف بـ close() عند الانتهاء.

القراءة من ملف

#include <fstream>
#include <string>
using namespace std;

int main() {
    ifstream file("notes.txt");
    string line;

    while (getline(file, line)) {   // سطرًا سطرًا
        cout << line << endl;
    }
    file.close();
    return 0;
}

الإضافة دون مسح

افتراضيًّا ofstream يمسح المحتوى القديم. للإضافة استخدم وضع app:

ofstream file("log.txt", ios::app);
file << "سطر مُضاف" << endl;

أوضاع الفتح

الوضعالمعنى
ios::outكتابة (افتراضي لـ ofstream)
ios::appإضافة للنهاية
ios::inقراءة
ios::binaryوضع ثنائي

قراءة كلمة كلمة

ifstream file("data.txt");
string word;
while (file >> word) {     // يتوقّف عند المسافات
    cout << word << endl;
}

أخطاء شائعة

  • نسيان فحص is_open() فتفشل العمليات بصمت.
  • نسيان close() فقد لا تُحفظ البيانات أو تبقى الموارد مشغولة.
  • استخدام ofstream العادي ظنًّا أنه يضيف — هو يمسح، استخدم ios::app.

🎯 التالي: مكتبة القوالب القياسية والمتّجهات (STL & vector).