قراءة الملفات المحددة في C++ [نسخة مكررة]
-
21-08-2019 - |
سؤال
هذا السؤال لديه بالفعل إجابة هنا:
ما هي أفضل طريقة لقراءة ملف محدد بعلامات جدولة في C++ وتخزين كل سطر كسجل؟لقد كنت أبحث عن مكتبة مفتوحة المصدر للمساعدة في هذا الأمر، لكنني لم أنجح، لذا يبدو أنني سأضطر إلى كتابة مكتبتي الخاصة.
المحلول
typedef vector<vector<string> > Rows;
Rows rows;
ifstream input("filename.csv");
char const row_delim = '\n';
char const field_delim = '\t';
for (string row; getline(input, row, row_delim); ) {
rows.push_back(Rows::value_type());
istringstream ss(row);
for (string field; getline(ss, field, field_delim); ) {
rows.back().push_back(field);
}
}
هذه ستجعلك تبدأ.لا يتم التحقق من أن كل صف يحتوي على نفس عدد الحقول، مما يسمح بالهروب field_delim
, ، إلخ.
نصائح أخرى
لا توجد مشكلة في استخدام iostreams - يمكنك قراءة كل سطر مع getline في السلسلة، ثم استخدام stringstream على تلك السلسلة للتكرار عبر الحقول.
هناك عدد قليل من المكتبات المدرجة في مقالة ويكيبيديا CSV_application_support.
لا تنتمي إلى StackOverflow