الملفات في لغة C++: من المبتدئ إلى المحترف في 20 دقيقة

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

الملفات في لغة C++: من المبتدئ إلى المحترف في 20 دقيقة

\n\n

تخيل أن برنامجك هو طباخ ماهر. إنه يعرف كيف يطبخ، لكن جميع المكونات يجب إحضارها يدويًا، والوصفات تختفي بعد كل استخدام. هذا لا يبدو جيدًا، أليس كذلك؟ لهذا السبب يجب على أي مطور يحترم نفسه أن يعرف كيفية العمل مع الملفات ونظام الملفات. في لغة C++، هذا ليس مجرد "ممكن" - بل هو الأساس الذي بدونه ستشعر بعدم الثقة كمبرمج.

\n\n

اليوم سنشرح العمل مع الملفات في لغة C++ بحيث لا تقوم فقط بنسخ الكود، بل تفهم حقًا ما يحدث تحت الغطاء. بدون محاضرات مملة، مع أمثلة حية ونصائح عملية. هيا بنا!

\n\n

التدفقات - أساس العمل مع الملفات في C++

\n\n

في لغة C++، يتم بناء العمل مع الملفات حول التدفقات. إذا كنت تعرف بالفعل cout و cin، فاعتبر أن نصف العمل قد تم. تعمل تدفقات الملفات بنفس المبدأ، فقط بدلاً من الشاشة أو لوحة المفاتيح، يتم إرسال البيانات إلى ملف أو تحميلها منه.

\n\n

اللاعبون الرئيسيون في الميدان:

\n\n
    \n
  • ifstream - للقراءة من ملف (input file stream).
  • \n
  • ofstream - للكتابة في ملف (output file stream).
  • \n
  • fstream - تدفق شامل للقراءة والكتابة.
  • \n
\n\n

كل هذه الفئات موجودة في ملف الرأس <fstream>. لا تنس تضمينه، وإلا سيغضب منك المترجم.

\n\n

كيف تفتح ملفًا دون أن تصاب بالجنون

\n\n

فتح ملف في C++ يشبه فتح باب: تحتاج إلى معرفة أين تذهب ولماذا. دعنا نلقي نظرة على مثال بسيط لفتح ملف للكتابة:

\n\n
#include <iostream>\n#include <fstream>\n#include <string>\n\nint main() {\n    std::ofstream outFile("example.txt"); // نفتح الملف للكتابة\n    \n    if (outFile.is_open()) {\n        outFile << "مرحبًا أيها الملف!" << std::endl;\n        outFile << "هذا هو السطر الثاني." << std::endl;\n        outFile.close(); // نغلق الملف\n        std::cout << "تمت الكتابة بنجاح!" << std::endl;\n    } else {\n        std::cerr << "فشل فتح الملف!" << std::endl;\n    }\n    \n    return 0;\n}\n
\n\n

لاحظ: نتحقق دائمًا مما إذا كان الملف قد فتح باستخدام is_open(). إذا لم يكن الملف موجودًا، سيقوم ofstream بإنشائه تلقائيًا. وإذا لم ينجح (على سبيل المثال، لا توجد صلاحيات للكتابة)، فلن يتعطل البرنامج، بل سيبلغ عن خطأ.

\n\n

أوضاع الفتح: عندما لا يكفي وضع واحد

\n\n

افتراضيًا، يقوم ofstream بإعادة كتابة الملف، بينما يقوم ifstream بالقراءة فقط. ولكن ماذا لو أردت إضافة بيانات إلى نهاية الملف؟ أو فتح ملف للقراءة والكتابة في نفس الوقت؟ هنا تأتي أعلام الأوضاع للإنقاذ:

\n\n
    \n
  • std::ios::in - فتح للقراءة.
  • \n
  • std::ios::out - فتح للكتابة (افتراضي لـ ofstream).
  • \n
  • std::ios::app - الإضافة إلى نهاية الملف (append).
  • \n
  • std::ios::ate - نقل المؤشر إلى النهاية عند الفتح.
  • \n
  • std::ios::binary - الفتح في الوضع الثنائي.
  • \n
\n\n

مثال على استخدام الأوضاع:

\n\n
std::ofstream logFile("log.txt", std::ios::app); // الإضافة إلى النهاية\nif (logFile.is_open()) {\n    logFile << "إدخال جديد في السجل" << std::endl;\n    logFile.close();\n}\n
\n\n

وإذا كنت بحاجة إلى القراءة والكتابة معًا - استخدم fstream مع أعلام مركبة:

\n\n
std::fstream file("data.txt", std::ios::in | std::ios::out);\n
\n\n

القراءة من ملف: بالكلمات وبالأسطر

\n\n

القراءة من ملف في C++ هي فن بحد ذاته. يمكنك القراءة بالكلمات، بالأسطر، بالأحرف. يعتمد الاختيار على المهمة.

\n\n

القراءة بالأسطر (الطريقة الأكثر شيوعًا)

\n\n
#include <fstream>\n#include <iostream>\n#include <string>\n\nint main() {\n    std::                

المدونات

توصيات الكتب