البرمجة

قراءة ملف نصي بفواصل متعددة ومعالجة المسافات: دليل فعّال للمبرمجين

في عمليات البرمجة، يمكن أن يكون قراءة ملفات النصوص مع فواصل معينة أحيانًا تحديًا، خاصةً عندما يتواجد نص في العمود الأول يحتوي على فراغات. في سياق السؤال الخاص بك، يتم استخدام فاصل “&” وقد تكون هناك تحديات في قراءة النصوص التي تحتوي على مسافات.

لحل هذه المشكلة، يمكن استخدام الكود التالي كمحاولة لقراءة الملف بشكل صحيح:

cpp
#include #include #include #include int main() { std::ifstream filein("selection.txt"); std::vector cut1, cut2; std::string line, c1, c2; while (std::getline(filein, line)) { std::istringstream data(line); std::getline(data, c1, '&'); std::getline(data, c2); // Remove leading and trailing whitespaces c1.erase(0, c1.find_first_not_of(" \t\n\r\f\v")); c1.erase(c1.find_last_not_of(" \t\n\r\f\v") + 1); cut1.push_back(c1); cut2.push_back(c2); } // Now cut1 and cut2 vectors contain the separated values // Output the results for verification for (size_t i = 0; i < cut1.size(); ++i) { std::cout << "Column 1: " << cut1[i] << ", Column 2: " << cut2[i] << std::endl; } return 0; }

هذا الكود يستخدم std::getline لفصل النصوص باستخدام الفاصل “&” ويقوم بتخزين النتائج في متغيرات cut1 و cut2. يتم أيضًا إزالة المسافات الزائدة في بداية ونهاية العمود الأول باستخدام erase.

يرجى تجربة هذا الكود وتعديله حسب احتياجاتك.

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

في عملية قراءة الملف النصي الخاص بك، يتم استخدام مكتبة fstream لفتح الملف والقراءة منه. تمثل std::istringstream طريقة فعالة لفصل السلاسل من السطور، حيث يتم استخدام std::getline للحصول على الأجزاء المختلفة بواسطة الفاصل “&”.

المعالجة بعد القراءة تتضمن إزالة المسافات الزائدة في بداية ونهاية العمود الأول باستخدام erase لضمان دقة البيانات.

أخيرًا، يتم عرض النتائج على الشاشة باستخدام حلقة تكرار لفحص المتغيرات cut1 و cut2.

من المهم أن تتحقق من الكود بناءً على بيانات ملف النص الخاص بك وتقوم بتعديله وفقًا لمتطلباتك الخاصة. يمكنك أيضًا تعزيز الكود ليتعامل مع حالات خاصة أخرى قد تظهر في بياناتك، مثل التعامل مع المسافات الزائدة بين الفاصل والنص في العمود الثاني، أو معاملة السطور الفارغة.

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

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

هذا المحتوى محمي من النسخ لمشاركته يرجى استعمال أزرار المشاركة السريعة أو تسخ الرابط !!