C++ طريقة إضافة نص في أول الملف

لإضافة نص في أول الملف بدون حذف باقي المحتوى الموجود فيه, يجب أن نقرأ محتوى الملف و نخزّنه بشكل مؤقت في متغير نصي.
بعدها نقوم بحذف الملف الأصلي.
بعدها نقوم بإنشاء ملف جديد فارغ بنفس إسم الملف الأصلي.
في الأخير نقوم بإضافة النص الجديد في الملف الجديد و يليه النص الذي قمنا بتخزينه في المتغير.

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


في المثال التالي قمنا بتطبيق الطريقة الأولى التي يمكن استخدامها لإضافة نص في أول الملف.
لأجل هذا الأمر قمنا بإنشاء كائن من الكلاس ifstream لقراءة محتوى الملف الأصلي الذي نريد إضافة نص في أوله.
و كائن من الكلاس ofstream لإنشاء ملف جديد بنفس الإسم و إضافة النص الجديد فيه و يليه النص الذي كان موجوداً في الملف الأصلي.

مثال

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

using namespace std;

int main()
{
    // لأننا سنتخدمه لقراءة محتوى ملف موجود في الحاسوب infile إسمه ifstream هنا قمنا بإنشاء كائن من الكلاس
	// لأننا سنتخدمه للكتابة في نفس الملف السابق outfile إسمه ofstream و قمنا بإنشاء كائن من الكلاس
	// سنضع فيه النص الذي نقرؤه من الملف بشكل مؤقت data المتغير
	// وضعنا فيه النص الذي ننوي إضافته في بداية الملف على سطر خاص textToAdd المتغير
    ifstream infile;
    ofstream outfile;
    string data;
    string textToAdd = "This is a new line added at the begining.\n";

    // "prepend.txt" لفتح ملف إسمه open() هنا قمنا باستدعاء الدالة
    infile.open("prepend.txt");

    // لا يوجد فيه أي مشاكل قبل التعامل معه infile هنا قمنا بالتأكد من أن الإتصال بالملف الذي يشير له الكائن
    if(infile)
    {
        // سنستخدم هذا المتغير لتخزين كل سطر جديد نقوم بجلبه من الملف فيه بشكل مؤقت قبل عرضه
        string line;

        // line تجد سطر جديد, ستقوم بوضعه بشكل مؤقت في المتغير getline() طالما أن الدالة while هنا في كل دورة من دورات الحلقة
        while (getline (infile, line))
        {
			// data في المتغير line بعدها سيتم إضافة السطر الذي تم وضعه بشكل مؤقت في المتغير
            data += line + "\n";
        }
		// data عند انتهاء الحلقة سيكون كل محتوى الملف قد تم وضعه في المتغير
    }

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

	// بدل الملف القديم و فتحه أيضاً"prepend.txt" لإنشاء ملف جديد إسمه open() هنا قمنا باستدعاء الدالة
    outfile.open("prepend.txt");

    // لا يوجد فيه أي مشاكل قبل التعامل معه outfile هنا قمنا بالتأكد من أن الإتصال بالملف الذي يشير له الكائن
    if(outfile)
    {
		// outfile في الملف الجديد الذي يشير إليه الكائن textToAdd هنا قمنا بإضافة النص الموجود في المتغير
        outfile << textToAdd;
		
		// أيضاً outfile الذي قمنا بنسخه من الملف الأصلي في الملف الذي يشير إليه الكائن data بعدها قمنا بإضافة النص الموجود في المتغير
        outfile << data;
    }

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

    return 0;
}

		

عند تشغيل البرنامج سيتم إنشاء ملف إسمه prepend.txt في نفس المشروع الذي نعمل فيه و بداخله النص التالي.

This is a new line added at the begining.
		

قم بإغلاق الملف prepend.txt إذا كنت قد فتحته, ثم قم بتشغيل البرنامج مرة ثانية و لاحظ كيف سيتم إضافة النص "This is a new line added at the begining." من جديد في أوله كالتالي.

This is a new line added at the begining.
This is a new line added at the begining.
		

ننصحك بإغلاق الملف prepend.txt و تغيير النص الذي وضعناه في المتغير textToAdd لأي نص تريد و من ثم تشغيل البرنامج لملاحظة كيف سيتم إضافة النص الذي كتبته أنت في أول الملف.

الدورات

أدوات مساعدة

أقسام الموقع

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