البرمجة

قراءة فعالة للملفات النصية

للقراءة الفعالة من ملف نصي باستخدام ستريمات std::ifstream في C++ والحصول على سطر كامل حتى العلامة التوجيهية |، يمكن استخدام وظيفة std::getline في حلقة تكرارية. يمكن تحسين الكود الحالي بتجنب تكرار الأسطر لكل متغير. يمكن تحقيق ذلك عن طريق وضع الأسطر المراد قراءتها في مصفوفة، ومن ثم قراءة السطر الواحد كاملاً وتقسيمه إلى الأجزاء المطلوبة.

فيما يلي كيفية تحقيق ذلك:

cpp
#include #include #include #include #include int main() { std::ifstream infile("filename.txt"); std::string line; while (std::getline(infile, line, '\n')) { std::istringstream iss(line); std::vector tokens; std::string token; while (std::getline(iss, token, '|')) { tokens.push_back(token); } if (tokens.size() >= 8) { std::string id = tokens[0]; std::string pw = tokens[1]; std::string name = tokens[2]; std::string gender = tokens[3]; std::string address = tokens[4]; std::string state = tokens[5]; std::string phone = tokens[6]; std::string balance = tokens[7]; // Now you can use id, pw, name, gender, address, state, phone, balance as needed } } return 0; }

هذا الكود يقرأ كل سطر من الملف ويقسمه إلى أجزاء باستخدام العلامة التوجيهية |. ثم يمكنك الوصول إلى كل جزء باستخدام الفهرس في المصفوفة tokens. إذا كان هناك 8 عناصر أو أكثر في المصفوفة، يتم استخدام القيم للمتغيرات المخصصة لكل جزء.

المزيد من المعلومات

بالطبع! يمكنك تحسين الكود السابق بإضافة بعض التعديلات لجعله أكثر فعالية وسهولة قراءة. إليك بعض النصائح لتحسين الكود:

  1. استخدام هيكل بيانات لتخزين السجلات: بدلاً من تخزين كل قيمة في متغير منفصل، يمكنك استخدام هيكل بيانات لتخزين السجل كاملاً. هذا يسهل إدارة البيانات ويجعل الكود أكثر تنظيمًا.

  2. استخدام الوظائف: قد ترغب في استخدام وظائف لتقسيم السطر واستخراج القيم، وهذا يسهل إعادة الاستخدام ويجعل الكود أكثر قابلية للصيانة.

  3. التعامل مع الأخطاء: تأكد من التحقق من نجاح عملية القراءة والتقسيم، والتعامل بشكل مناسب مع أي أخطاء تحدث.

  4. تنظيم الكود: استخدم تعليقات لشرح الجزئيات الهامة في الكود ولتسهيل قراءته.

  5. إغلاق الملف بشكل صحيح: تأكد من إغلاق ملف الإدخال بعد الانتهاء من استخدامه.

إليك كيف يمكن تحسين الكود بمراعاة هذه النصائح:

cpp
#include #include #include #include #include struct Record { std::string id; std::string pw; std::string name; std::string gender; std::string address; std::string state; std::string phone; std::string balance; }; Record parseRecord(const std::string& line) { std::istringstream iss(line); std::vector tokens; std::string token; while (std::getline(iss, token, '|')) { tokens.push_back(token); } Record record; if (tokens.size() >= 8) { record.id = tokens[0]; record.pw = tokens[1]; record.name = tokens[2]; record.gender = tokens[3]; record.address = tokens[4]; record.state = tokens[5]; record.phone = tokens[6]; record.balance = tokens[7]; } return record; } int main() { std::ifstream infile("filename.txt"); std::string line; while (std::getline(infile, line, '\n')) { Record record = parseRecord(line); // Now you can use record.id, record.pw, record.name, etc. } infile.close(); // Close the file when done return 0; }

هذا الكود يستخدم هيكل Record لتخزين السجل، ويستخدم وظيفة parseRecord لتحليل السطر واستخراج القيم. كما يقوم الكود بإغلاق الملف بشكل صحيح بعد الانتهاء من قراءته.

مقالات ذات صلة

زر الذهاب إلى الأعلى
إغلاق

أنت تستخدم إضافة Adblock

يرجى تعطيل مانع الإعلانات حيث أن موقعنا غير مزعج ولا بأس من عرض الأعلانات لك فهي تعتبر كمصدر دخل لنا و دعم مقدم منك لنا لنستمر في تقديم المحتوى المناسب و المفيد لك فلا تبخل بدعمنا عزيزي الزائر