في البداية، يجدر بك فهم كيفية قراءة الملف واستخراج المعلومات منه بطريقة صحيحة. يمكنك استخدام مكتبة fstream
في C++ لفتح الملف وقراءته. في هذا السياق، يبدو أنك تريد قراءة كل سطر من الملف وتحويله إلى كائن من نوع Complejo
. سأقوم بتقديم شرح مفصل للخطوات التي يمكنك اتخاذها.
أولاً، يجب عليك تحديد السبيل الذي ستقوم به لفتح الملف وقراءته. في هذا المثال، سنفترض أن لديك ملف اسمه “complex_data.txt” يحتوي على الأرقام العقدية كما ورد في المثال الذي قدمته.
-
مشكلة إشارات الـ enum في C++15/03/2024
-
توزيع الأنواع في بيئات مختلفة باستخدام R03/04/2024
-
تحليل وحل مشكلة قراءة قوائم متسلسلة في لغة C05/02/2024
cpp#include
#include
#include
int main() {
// اسم الملف
std::string fileName = "complex_data.txt";
// محاولة فتح الملف
std::ifstream file(fileName);
// التحقق من نجاح فتح الملف
if (!file.is_open()) {
std::cerr << "فشل في فتح الملف: " << fileName << std::endl;
return 1;
}
// Vector لتخزين الكائنات من الأرقام العقدية
std::vector complexObjects;
// قراءة كل سطر من الملف
std::string line;
while (std::getline(file, line)) {
// استخدام stringstream لتحليل السطر إلى أجزاء
std::stringstream ss(line);
// المتغيرات لتخزين الأجزاء المستخرجة
int realPart, imaginaryPart;
// قراءة الجزء الحقيقي
ss >> realPart;
// تجاوز علامة الجمع
ss.ignore(1);
// قراءة الجزء الخيالي
ss >> imaginaryPart;
// إنشاء كائن Complejo وإضافته إلى الـ vector
Complejo complexObject(realPart, imaginaryPart);
complexObjects.push_back(complexObject);
}
// إغلاق الملف بعد الانتهاء من قراءته
file.close();
// يمكنك الآن استخدام الـ vector complexObjects الذي يحتوي على الكائنات المقروءة من الملف
return 0;
}
في هذا المثال، تم استخدام std::getline
لقراءة كل سطر من الملف، ثم تم استخدام std::stringstream
لتحليل كل سطر إلى جزئين (الجزء الحقيقي والجزء الخيالي). بعد ذلك، تم إنشاء كائن من النوع Complejo
باستخدام الأجزاء المستخرجة وإضافته إلى الـ vector complexObjects
. يمكنك الآن استخدام هذا الـ vector لاستخدام الكائنات كما تحتاج.
المزيد من المعلومات
بالطبع، دعنا نوسع قليلاً على الشرح.
في هذا السياق، لقد استخدمنا std::ifstream
لفتح الملف وstd::vector
لتخزين الكائنات المقروءة من الملف. دعنا نلقي نظرة أكثر تفصيلاً على بعض الجوانب الهامة في هذا الكود.
-
فتح الملف:
cppstd::ifstream file(fileName);
هنا قمنا بفتح الملف باستخدام
std::ifstream
وقمنا بتحديد اسم الملف كمتغيرfileName
. يتم التحقق من نجاح فتح الملف باستخدامfile.is_open()
. -
الـ Vector لتخزين الكائنات:
cppstd::vector
complexObjects; هذا الـ vector يستخدم لتخزين الكائنات من نوع
Complejo
التي سيتم إنشاؤها من الأرقام العقدية في الملف. -
قراءة السطور من الملف:
cppstd::string line; while (std::getline(file, line)) { // ... }
تم استخدام
std::getline
لقراءة كل سطر من الملف. السطر يتم تخزينه في متغيرline
. -
استخدام
std::stringstream
لتحليل السطر:cppstd::stringstream ss(line);
يتم استخدام
std::stringstream
لتحليل السطر إلى أجزاء فردية. يمكننا استخدامss >> variable
لقراءة قيمة من الـ stringstream. -
إنشاء كائن
Complejo
وإضافته إلى الـ Vector:cppComplejo complexObject(realPart, imaginaryPart); complexObjects.push_back(complexObject);
بعد قراءة الأجزاء الحقيقية والخيالية من السطر، يتم إنشاء كائن من نوع
Complejo
باستخدام هذه الأجزاء، ثم يتم إضافته إلى الـ vectorcomplexObjects
. -
إغلاق الملف:
cppfile.close();
بمجرد الانتهاء من قراءة الملف، يُفضل دائمًا إغلاقه باستخدام
file.close()
.
هذا الكود يعتبر نقطة انطلاق جيدة للبدء في قراءة البيانات من ملفات في C++. يمكنك استخدام complexObjects
الآن للقيام بأي عمليات إضافية تحتاج إليها في برنامجك.