0Pricing
C++ Academy · درس

كتابة الملفات باستخدام ofstream

اكتب ملفات المخرجات

كتابة الملفات باستخدام ofstream درس مجاني في C++ Academy على CoddyKit. هذا هو الدرس 2 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في C++ Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة C++ Academy 4 دروس في المجموع.

ما هو ofstream؟

يكتب std::ofstream (دفق إخراج الملفات) البيانات إلى الملفات. وهو يعمل مثل std::cout، لكن وجهته ملف.

#include <iostream>
#include <fstream>

int main() {
    std::ofstream out("hello.txt");
    out << "Hello, file!\n";
    std::cout << "wrote file\n";
    return 0;
}

كتابة النص

استخدموا العامل << لكتابة السلاسل النصية والأعداد، تمامًا كما عند طباعتها في وحدة التحكم.

#include <iostream>
#include <fstream>

int main() {
    std::ofstream out("report.txt");
    out << "Score: " << 95 << '\n';
    out << "Grade: A\n";
    std::cout << "done\n";
    return 0;
}

الاقتطاع افتراضيًا

يؤدي فتح ملف موجود باستخدام ofstream إلى مسح محتوياته السابقة. ويبدأ كل تشغيل بملف جديد.

#include <iostream>
#include <fstream>

int main() {
    std::ofstream("t.txt") << "old content\n";
    std::ofstream out("t.txt");
    out << "new content\n";
    std::ifstream in("t.txt");
    std::string line; std::getline(in, line);
    std::cout << line << '\n';
    return 0;
}

الإلحاق باستخدام وضع app

مرّروا std::ios::app للحفاظ على المحتوى الموجود وإضافة بيانات جديدة في النهاية.

#include <iostream>
#include <fstream>

int main() {
    std::ofstream("log.txt") << "line1\n";
    std::ofstream out("log.txt", std::ios::app);
    out << "line2\n";
    out.close();
    std::ifstream in("log.txt");
    std::string l; int n = 0;
    while (std::getline(in, l)) ++n;
    std::cout << n << " lines\n";
    return 0;
}

التحقق من نجاح الكتابة

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

#include <iostream>
#include <fstream>

int main() {
    std::ofstream out("ok.txt");
    if (!out) {
        std::cout << "failed to open\n";
        return 1;
    }
    out << "safe write\n";
    std::cout << "write ok\n";
    return 0;
}

كتابة الأعداد وتنسيقها

تنطبق معالجات الإدخال والإخراج مثل std::fixed وstd::setprecision على تدفقات الملفات أيضًا.

#include <iostream>
#include <fstream>
#include <iomanip>

int main() {
    std::ofstream out("pi.txt");
    out << std::fixed << std::setprecision(3) << 3.14159 << '\n';
    out.close();
    std::ifstream in("pi.txt");
    std::string s; in >> s;
    std::cout << s << '\n';
    return 0;
}

كتابة حلقة من البيانات

اكتبوا عدة أسطر باستخدام حلقة تكرار. إذ يرسل كل تكرار سجلًا إلى الملف.

#include <iostream>
#include <fstream>

int main() {
    std::ofstream out("squares.txt");
    for (int i = 1; i <= 5; ++i) out << i << ' ' << i * i << '\n';
    out.close();
    std::cout << "wrote 5 rows\n";
    return 0;
}

تفريغ المخزن المؤقت

تُخزَّن المخرجات مؤقتًا. ويفرض std::flush أو std::endl تفريغ المخزن المؤقت إلى القرص فورًا؛ كما يؤدي الإغلاق إلى تفريغه.

#include <iostream>
#include <fstream>

int main() {
    std::ofstream out("flush.txt");
    out << "important" << std::flush;
    std::cout << "flushed to disk\n";
    return 0;
}

endl مقابل محرف السطر الجديد

يضيف '\n' محرف سطر جديد فحسب. أما std::endl فيضيف محرف سطر جديد ويفرغ المخزن المؤقت، ولذلك يكون أبطأ في الحلقات المكثفة.

#include <iostream>
#include <fstream>

int main() {
    std::ofstream out("nl.txt");
    out << "fast\n";          // newline only
    out << "slow" << std::endl; // newline + flush
    std::cout << "both written\n";
    return 0;
}

الكتابة ثم القراءة ذهابًا وإيابًا

من الأنماط الشائعة: كتابة البيانات، ثم الإغلاق، ثم إعادة الفتح لقراءتها.

#include <iostream>
#include <fstream>

int main() {
    {
        std::ofstream out("rt.txt");
        out << 7 << ' ' << 8 << '\n';
    }
    std::ifstream in("rt.txt");
    int a, b; in >> a >> b;
    std::cout << a + b << '\n';
    return 0;
}

اختيار أوضاع الفتح

ادمجوا الأعلام باستخدام |. الأوضاع الشائعة هي: ios::out (الافتراضي)، وios::app (الإلحاق)، وios::trunc (المسح).

#include <iostream>
#include <fstream>

int main() {
    std::ofstream out("modes.txt", std::ios::out | std::ios::trunc);
    out << "fresh\n";
    std::cout << "opened with explicit modes\n";
    return 0;
}

اختبار سريع

اختبروا فهمكم لأوضاع ofstream.

خلاصة

لقد تعلمتم أن std::ofstream:

  • يكتب باستخدام <<، مع اقتطاع المحتوى افتراضيًا
  • يلحق البيانات باستخدام std::ios::app
  • يخزّن المخرجات مؤقتًا؛ ويرسلها std::flush أو std::endl أو الإغلاق إلى القرص

بعد ذلك، ستتعاملون مع البايتات الخام باستخدام إدخال وإخراج الملفات الثنائية.

الأسئلة الشائعة

هل درس «كتابة الملفات باستخدام ofstream» مجاني؟

نعم — نص درس «كتابة الملفات باستخدام ofstream» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة C++ Academy، انتقل إلى CoddyKit PRO. تتضمن دورة C++ Academy 4 دروس في المجموع.

ماذا ستتعلم في «كتابة الملفات باستخدام ofstream»؟

اكتب ملفات المخرجات تتمرن على C++ Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ C++ Academy؟

لا تُشترط خبرة سابقة. C++ Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 2 من أصل 4.

كم من الوقت يستغرق درس «كتابة الملفات باستخدام ofstream»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس C++ Academy هذا؟

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

جميع الدروس في هذه الدورة

  1. قراءة الملفات باستخدام ifstream
  2. كتابة الملفات باستخدام ofstream
  3. إدخال وإخراج الملفات الثنائية
  4. معالجة الأخطاء والحالة
← العودة إلى C++ Academy