سؤال

هذا السؤال لديه بالفعل إجابة هنا:

ما هي أفضل طريقة لقراءة ملف محدد بعلامات جدولة في 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.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top