C++ التعامل مع الملفات: كيفية فتح الملفات وكتابتها وقراءتها وإغلاقها C++
ما هو التعامل مع الملفات في C++?
تخزن الملفات البيانات بشكل دائم في جهاز تخزين. وباستخدام معالجة الملفات، يمكن تخزين الناتج من برنامج في ملف. ويمكن إجراء عمليات مختلفة على البيانات أثناء وجودها في الملف.
التدفق هو تجريد لجهاز يتم فيه تنفيذ عمليات الإدخال/الإخراج. يمكنك تمثيل التدفق إما كوجهة أو كمصدر لأحرف بطول غير محدد. سيتم تحديد ذلك من خلال استخدامها. C++ يوفر لك مكتبة تحتوي على طرق التعامل مع الملفات. دعونا نناقش ذلك.
مكتبة اف ستريم
توفر مكتبة fstream C++ المبرمجين مع ثلاث فئات للعمل مع الملفات. تشمل هذه الفئات:
- اوفستريم- تمثل هذه الفئة دفق الإخراج. يتم استخدامه لإنشاء الملفات وكتابة المعلومات إلى الملفات.
- إفستريم- تمثل هذه الفئة دفق الإدخال. يتم استخدامه لقراءة المعلومات من ملفات البيانات.
- com.fstream- تمثل هذه الفئة بشكل عام دفق الملفات. لأنه يأتي مع قدرات ofstream/ifstream. وهذا يعني أنه قادر على إنشاء الملفات والكتابة إلى الملفات والقراءة من ملفات البيانات.
الصورة التالية تجعل الأمر سهلاً للفهم:
لاستخدام الفئات المذكورة أعلاه من مكتبة fstream، يجب عليك تضمينها في برنامجك كملف رأس. بالطبع، ستستخدم التوجيه #include للمعالج المسبق. يجب عليك أيضًا تضمين ملف رأس iostream.
كيفية فتح الملفات
قبل إجراء أي عملية على ملف، يجب عليك أولاً فتحه. إذا كنت بحاجة إلى الكتابة إلى الملف، فافتحه باستخدام كائنات fstream أو ofstream. إذا كنت بحاجة فقط إلى القراءة من الملف، فافتحه باستخدام كائن ifstream.
الكائنات الثلاثة، fstream، ofstream، وifstream، لها الدالة open() المحددة فيها. تأخذ الدالة بناء الجملة هذا:
open (file_name, mode);
- تشير المعلمة file_name إلى اسم الملف المراد فتحه.
- معلمة الوضع اختيارية. ويمكن أن تأخذ أيًا من القيم التالية:
القيم | الوصف |
---|---|
دائرة الرقابة الداخلية :: التطبيق | وضع الإلحاق. يتم إلحاق الإخراج المرسل إلى الملف به. |
دائرة الرقابة الداخلية::أكلت | فهو يفتح الملف للإخراج ثم ينقل عنصر التحكم في القراءة والكتابة إلى نهاية الملف. |
دائرة الرقابة الداخلية::في | يفتح الملف للقراءة. |
دائرة الرقابة الداخلية::خارج | يفتح الملف للكتابة. |
دائرة الرقابة الداخلية::ترونك | في حالة وجود ملف، يجب اقتطاع عناصر الملف قبل فتحه. |
من الممكن استخدام وضعين في نفس الوقت. يمكنك الجمع بينهما باستخدام عامل | (OR).
مثال 1:
#include <iostream> #include <fstream> using namespace std; int main() { fstream my_file; my_file.open("my_file", ios::out); if (!my_file) { cout << "File not created!"; } else { cout << "File created successfully!"; my_file.close(); } return 0; }
الإخراج:
فيما يلي لقطة شاشة للكود:
شرح الكود:
- قم بتضمين ملف رأس iostream في البرنامج لاستخدام وظائفه.
- قم بتضمين ملف رأس fstream في البرنامج لاستخدام فئاته.
- قم بتضمين مساحة الاسم std في الكود الخاص بنا لاستخدام فئاتها دون استدعائها.
- استدعاء الدالة الرئيسية (). يجب أن يذهب منطق البرنامج داخل جسمه.
- قم بإنشاء كائن من فئة fstream وأعطه الاسم my_file.
- قم بتطبيق الدالة open() على الكائن أعلاه لإنشاء ملف جديد. يسمح لنا وضع الخروج بالكتابة في الملف.
- استخدم عبارة if للتحقق من فشل إنشاء الملف.
- رسالة للطباعة على وحدة التحكم إذا لم يتم إنشاء الملف.
- نهاية نص بيان if.
- استخدم عبارة else لتوضيح ما يجب فعله إذا تم إنشاء الملف.
- رسالة للطباعة على وحدة التحكم إذا تم إنشاء الملف.
- قم بتطبيق الدالة Close() على الكائن لإغلاق الملف.
- نهاية نص بيان آخر.
- يجب أن يُرجع البرنامج قيمة إذا اكتمل بنجاح.
- نهاية نص الوظيفة الرئيسية ().
كيفية إغلاق الملفات
مرة C++ برنامج ينتهي، فإنه تلقائيا
- يغسل الجداول
- يحرر الذاكرة المخصصة
- يغلق الملفات المفتوحة .
ومع ذلك، كمبرمج، يجب أن تتعلم كيفية إغلاق الملفات المفتوحة قبل إنهاء البرنامج.
تحتوي كائنات fstream وofstream وifstream على وظيفة Close() لإغلاق الملفات. تأخذ الدالة بناء الجملة هذا:
void close();
كيفية الكتابة إلى الملفات
يمكنك الكتابة إلى الملف مباشرة من ملف C++ البرنامج. يمكنك استخدام عامل إدراج التدفق (<<) لهذا الغرض. يجب وضع النص المراد كتابته في الملف بين علامتي اقتباس مزدوجتين.
دعونا نثبت هذا.
مثال 2:
#include <iostream> #include <fstream> using namespace std; int main() { fstream my_file; my_file.open("my_file.txt", ios::out); if (!my_file) { cout << "File not created!"; } else { cout << "File created successfully!"; my_file << "Guru99"; my_file.close(); } return 0; }
الإخراج:
فيما يلي لقطة شاشة للكود:
شرح الكود:
- قم بتضمين ملف رأس iostream في البرنامج لاستخدام وظائفه.
- قم بتضمين ملف رأس fstream في البرنامج لاستخدام فئاته.
- قم بتضمين مساحة الاسم std في البرنامج لاستخدام فئاته دون استدعائها.
- استدعاء الدالة الرئيسية (). يجب إضافة منطق البرنامج داخل نص هذه الوظيفة.
- قم بإنشاء مثيل لفئة fstream وأعطه الاسم my_file.
- استخدم الدالة open() لإنشاء ملف جديد باسم my_file.txt. سيتم فتح الملف في وضع الخروج للكتابة فيه.
- استخدم عبارة if للتحقق مما إذا كان الملف لم يتم فتحه.
- النص المطلوب طباعته على وحدة التحكم إذا لم يتم فتح الملف.
- نهاية نص عبارة if.
- استخدم عبارة else لتوضيح ما يجب فعله إذا تم إنشاء الملف.
- النص المطلوب طباعته على وحدة التحكم إذا تم إنشاء الملف.
- اكتب بعض النص إلى الملف الذي تم إنشاؤه.
- استخدم الدالة Close() لإغلاق الملف.
- نهاية نص بيان آخر.
- يجب أن يقوم البرنامج بإرجاع القيمة عند اكتماله بنجاح.
- نهاية نص الدالة main().
كيفية القراءة من الملفات
يمكنك قراءة المعلومات من الملفات إلى جهازك C++ البرنامج. من الممكن القيام بذلك باستخدام عامل استخراج التدفق (>>). يمكنك استخدام العامل بنفس الطريقة التي تستخدمه بها لقراءة إدخال المستخدم من لوحة المفاتيح. ومع ذلك، بدلاً من استخدام كائن cin، يمكنك استخدام كائن ifstream/fstream.
مثال 3:
#include <iostream> #include <fstream> using namespace std; int main() { fstream my_file; my_file.open("my_file.txt", ios::in); if (!my_file) { cout << "No such file"; } else { char ch; while (1) { my_file >> ch; if (my_file.eof()) break; cout << ch; } } my_file.close(); return 0; }
الإخراج:
لايوجد ملف مشابه
فيما يلي لقطة شاشة للكود:
شرح الكود:
- قم بتضمين ملف رأس iostream في البرنامج لاستخدام وظائفه.
- قم بتضمين ملف رأس fstream في البرنامج لاستخدام فئاته.
- قم بتضمين مساحة الاسم std في البرنامج لاستخدام فئاته دون استدعائها.
- استدعاء الدالة الرئيسية (). يجب إضافة منطق البرنامج داخل نص هذه الوظيفة.
- قم بإنشاء مثيل لفئة fstream وأعطه الاسم my_file.
- استخدم الدالة open() لإنشاء ملف جديد باسم my_file.txt. سيتم فتح الملف في وضع القراءة منه.
- استخدم عبارة if للتحقق من عدم وجود الملف.
- النص المطلوب طباعته على وحدة التحكم إذا لم يتم العثور على الملف.
- نهاية نص عبارة if.
- استخدم عبارة else لتوضيح ما يجب فعله إذا تم العثور على الملف.
- إنشاء متغير شار اسمه الفصل.
- إنشاء حائط اللوب للتكرار على محتويات الملف.
- كتابة/تخزين محتويات الملف في المتغير ch.
- استخدم الشرط if والدالة eof() التي تمثل نهاية الملف، لضمان استمرار المترجم في القراءة من الملف إذا لم يتم الوصول إلى النهاية.
- استخدم عبارة Break لإيقاف القراءة من الملف بمجرد الوصول إلى النهاية.
- اطبع محتويات المتغير ch على وحدة التحكم.
- نهاية الجسم في حين.
- نهاية نص بيان آخر.
- قم باستدعاء الدالة Close() لإغلاق الملف.
- يجب أن يقوم البرنامج بإرجاع القيمة عند اكتماله بنجاح.
- نهاية نص الدالة main().
الملخص
- من خلال معالجة الملفات، يمكن إرسال مخرجات البرنامج وتخزينها في ملف.
- ومن الممكن بعد ذلك تطبيق عدد من العمليات على البيانات أثناء وجودها في الملف.
- الدفق هو تجريد يمثل جهازًا يتم فيه تنفيذ عمليات الإدخال/الإخراج.
- يمكن تمثيل الدفق كوجهة أو مصدر لأحرف ذات طول غير محدد.
- توفر مكتبة fstream C++ المبرمجين مع طرق التعامل مع الملفات.
- لاستخدام المكتبة، يجب عليك تضمينها في برنامجك باستخدام توجيه #include للمعالج المسبق.