للقراءة الفعالة من ملف نصي باستخدام ستريمات std::ifstream
في C++ والحصول على سطر كامل حتى العلامة التوجيهية |
، يمكن استخدام وظيفة std::getline
في حلقة تكرارية. يمكن تحسين الكود الحالي بتجنب تكرار الأسطر لكل متغير. يمكن تحقيق ذلك عن طريق وضع الأسطر المراد قراءتها في مصفوفة، ومن ثم قراءة السطر الواحد كاملاً وتقسيمه إلى الأجزاء المطلوبة.
فيما يلي كيفية تحقيق ذلك:
-
استرجاع قيم متغير PHP بواسطة Ajax29/02/2024
-
كيفية العثور على اسم قاعدة البيانات في PHP12/03/2024
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 عناصر أو أكثر في المصفوفة، يتم استخدام القيم للمتغيرات المخصصة لكل جزء.
المزيد من المعلومات
بالطبع! يمكنك تحسين الكود السابق بإضافة بعض التعديلات لجعله أكثر فعالية وسهولة قراءة. إليك بعض النصائح لتحسين الكود:
-
استخدام هيكل بيانات لتخزين السجلات: بدلاً من تخزين كل قيمة في متغير منفصل، يمكنك استخدام هيكل بيانات لتخزين السجل كاملاً. هذا يسهل إدارة البيانات ويجعل الكود أكثر تنظيمًا.
-
استخدام الوظائف: قد ترغب في استخدام وظائف لتقسيم السطر واستخراج القيم، وهذا يسهل إعادة الاستخدام ويجعل الكود أكثر قابلية للصيانة.
-
التعامل مع الأخطاء: تأكد من التحقق من نجاح عملية القراءة والتقسيم، والتعامل بشكل مناسب مع أي أخطاء تحدث.
-
تنظيم الكود: استخدم تعليقات لشرح الجزئيات الهامة في الكود ولتسهيل قراءته.
-
إغلاق الملف بشكل صحيح: تأكد من إغلاق ملف الإدخال بعد الانتهاء من استخدامه.
إليك كيف يمكن تحسين الكود بمراعاة هذه النصائح:
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
لتحليل السطر واستخراج القيم. كما يقوم الكود بإغلاق الملف بشكل صحيح بعد الانتهاء من قراءته.