قراءة الملفات باستخدام ifstream
اقرأ النصوص والبيانات
قراءة الملفات باستخدام ifstream درس مجاني في C++ Academy على CoddyKit. هذا هو الدرس 1 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في C++ Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة C++ Academy 4 دروس في المجموع.
ما هو ifstream؟
يقرأ std::ifstream (دفق إدخال الملفات) البيانات من الملفات. وهو يعمل مثل std::cin، لكن مصدره ملف على القرص.
- يُعرَّف في
<fstream>. - يفتح ملفًا باسمه في الباني الخاص به.
#include <iostream>
#include <fstream>
int main() {
std::ofstream("demo.txt") << "hello\n";
std::ifstream in("demo.txt");
std::string word;
in >> word;
std::cout << word << '\n';
return 0;
}فتح ملف
أنشئوا كائن ifstream باستخدام اسم ملف، ثم تحقّقوا باستخدام is_open() مما إذا كان قد تم العثور على الملف.
#include <iostream>
#include <fstream>
int main() {
std::ofstream("data.txt") << "42\n";
std::ifstream in("data.txt");
std::cout << (in.is_open() ? "opened" : "failed") << '\n';
return 0;
}قراءة الكلمات
يقرأ العامل >> الرموز المفصولة بالمسافات البيضاء، تمامًا كما يحدث مع cin.
#include <iostream>
#include <fstream>
int main() {
std::ofstream("words.txt") << "alpha beta gamma\n";
std::ifstream in("words.txt");
std::string w;
while (in >> w) std::cout << w << '\n';
return 0;
}قراءة الأعداد
يمكنكم استخراج الأنواع الرقمية مباشرةً. إذ يحلل استخراج الدفق النص إلى النوع المناسب.
#include <iostream>
#include <fstream>
int main() {
std::ofstream("nums.txt") << "10 20 30\n";
std::ifstream in("nums.txt");
int sum = 0, x;
while (in >> x) sum += x;
std::cout << "sum = " << sum << '\n';
return 0;
}قراءة الأسطر باستخدام getline
استخدموا std::getline() لقراءة سطر كامل، بما في ذلك المسافات، حتى محرف السطر الجديد.
#include <iostream>
#include <fstream>
#include <string>
int main() {
std::ofstream("lines.txt") << "first line\nsecond line\n";
std::ifstream in("lines.txt");
std::string line;
while (std::getline(in, line)) std::cout << "[" << line << "]\n";
return 0;
}قراءة الملف بأكمله
لقراءة محتوى ملف بأكمله دفعةً واحدة، اقرأوه في سلسلة نصية باستخدام مكررات مخزن الدفق.
#include <iostream>
#include <fstream>
#include <sstream>
int main() {
std::ofstream("all.txt") << "line1\nline2\n";
std::ifstream in("all.txt");
std::stringstream ss;
ss << in.rdbuf();
std::cout << ss.str();
return 0;
}اكتشاف نهاية الملف
تنتهي حلقة القراءة عندما تفشل عملية الاستخراج، وعادةً ما يحدث ذلك عند نهاية الملف. ويؤدي اختبار الدفق ضمن شرط إلى التحقق من ذلك.
#include <iostream>
#include <fstream>
int main() {
std::ofstream("eof.txt") << "1 2 3\n";
std::ifstream in("eof.txt");
int x, count = 0;
while (in >> x) ++count;
std::cout << "read " << count << " numbers\n";
std::cout << "eof: " << std::boolalpha << in.eof() << '\n';
return 0;
}التعامل مع ملف مفقود
إذا لم يكن الملف موجودًا، يكون الدفق في حالة فشل وتكون is_open() بقيمة false. تحقّقوا دائمًا قبل القراءة.
#include <iostream>
#include <fstream>
int main() {
std::ifstream in("does_not_exist_12345.txt");
if (!in) {
std::cout << "could not open file\n";
}
return 0;
}تحليل الأسطر المنظَّمة
ادمجوا getline مع istringstream لتحليل الحقول من كل سطر.
#include <iostream>
#include <fstream>
#include <sstream>
#include <string>
int main() {
std::ofstream("people.txt") << "Alice 30\nBob 25\n";
std::ifstream in("people.txt");
std::string line;
while (std::getline(in, line)) {
std::istringstream ss(line);
std::string name; int age;
ss >> name >> age;
std::cout << name << " is " << age << '\n';
}
return 0;
}الفتح والإغلاق الصريحان
يمكنكم فتح دفق أُنشئ باستخدام الباني الافتراضي لاحقًا عبر open()، وإغلاقه عبر close().
#include <iostream>
#include <fstream>
int main() {
std::ofstream("oc.txt") << "data\n";
std::ifstream in;
in.open("oc.txt");
std::string s; in >> s;
in.close();
std::cout << s << '\n';
return 0;
}يتولى RAII الإغلاق عنكم
عند خروج كائن ifstream من النطاق، يغلق المدمّر الملف تلقائيًا. ونادرًا ما تكون close() اليدوية ضرورية.
#include <iostream>
#include <fstream>
int main() {
std::ofstream("raii.txt") << "x\n";
{
std::ifstream in("raii.txt");
std::string s; in >> s;
std::cout << s << '\n';
} // file closed here automatically
std::cout << "closed\n";
return 0;
}اختبار سريع
اختبروا فهمكم لقراءة الأسطر.
خلاصة
لقد تعلمتم أن std::ifstream:
- يقرأ من الملفات باستخدام
>>وstd::getline - ينبغي التحقق منه باستخدام
is_open()أو باختبار الدفق - يُغلق تلقائيًا عبر RAII عند خروجه من النطاق
بعد ذلك، ستكتبون الملفات باستخدام ofstream.
الأسئلة الشائعة
هل درس «قراءة الملفات باستخدام ifstream» مجاني؟
نعم — نص درس «قراءة الملفات باستخدام ifstream» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة C++ Academy، انتقل إلى CoddyKit PRO. تتضمن دورة C++ Academy 4 دروس في المجموع.
ماذا ستتعلم في «قراءة الملفات باستخدام ifstream»؟
اقرأ النصوص والبيانات تتمرن على C++ Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ C++ Academy؟
لا تُشترط خبرة سابقة. C++ Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 1 من أصل 4.
كم من الوقت يستغرق درس «قراءة الملفات باستخدام ifstream»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس C++ Academy هذا؟
نعم. كل درس في C++ Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- قراءة الملفات باستخدام ifstream
- كتابة الملفات باستخدام ofstream
- إدخال وإخراج الملفات الثنائية
- معالجة الأخطاء والحالة