Learn Typing Programming Basics SQL HTML CSS JavaScript Python C++ Java JavaFX Swing Computer Fundamentals English English Conversations Problem Solving

C++ طريقة إنشاء ملف و الكتابة فيه و من ثم قراءة محتواه و عرضه في البرنامج

في المثال التالي قمنا بإنشاء ملف نصي جديد إسمه demo.txt في نفس المشروع الذي نعمل فيه.
بعدها قمنا بالتأكد من أنه قد تم إنشاء الملف بنجاح و من ثم كتابة سطرين بداخله.
بعدها قمنا بالرجوع لبداية الملف باستخدام الدالة seekg() مع تمرير القيمة 0 لها للإشارة إلى أول حرف موجود في الملف.
بعدها قمنا بقراءة النص الذي أضفناه في الملف منه و عرضه في البرنامج, أي في الكونسول.

ملاحظة: عند التعامل مع الملف بواسطة كائن من الكلاس fstream يجب تمرير الثابت ios::trunc للدالة open() في حال كان الملف الذي سيتم فتحه في الأساس غير موجود و إلا لن تتمكن من إنشاؤه.

مثال

main.cpp
#include <iostream>
#include <fstream>

using namespace std;

int main()
{
    // لأننا سنستخدمه لإنشاء ملف جديد و الكتابة فيه file إسمه fstream هنا قمنا بإنشاء كائن من الكلاس
    fstream file;

    // و فتحه "demo.txt" لإنشاء ملف جديد إسمه open() هنا قمنا باستدعاء الدالة
    file.open("demo.txt", ios::in | ios::out | ios::trunc);

    // لا يوجد فيه أي مشاكل قبل التعامل معه file هنا قمنا بالتأكد من أن الإتصال بالملف الذي يشير له الكائن
    if(file)
    {
		// file هنا قمنا بإضافة نص في الملف الذي يشير إليه الكائن
		file << "This is a line.\n";
		file << "This is another line.\n";
		
		// هنا قمنا بالرجوع لأول الملف لأننا سنقوم بقراءة محتواه من البداية
		file.seekg(0);
	
		// سنستخدم هذا المتغير لتخزين كل سطر جديد نقوم بجلبه من الملف فيه بشكل مؤقت قبل عرضه
		string line;
	
		// line تجد سطر جديد, ستقوم بوضعه بشكل مؤقت في المتغير getline() طالما أن الدالة while هنا في كل دورة من دورات الحلقة
		while (getline (file, line))
		{
			// بعدها سنقوم بعرضه و النزول على سطر جديد حتى لا يظهر كل محتوى الملف على سطر واحد
			cout << line << endl;
		}
    }

    // لإغلاق الإتصال مع الملف المفتوح في الذاكرة file من الكائن close() هنا قمنا باستدعاء الدالة
    file.close();

    return 0;
}
		

عند تشغيل البرنامج سيتم عرض محتوى الملف demo.txt كالتالي.

This is a line.
This is another line.
		

الدورات

أدوات مساعدة

أقسام الموقع

دورات
مقالات كتب مشاريع أسئلة