مكتبة 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).