Вопрос

На этот вопрос уже есть ответ здесь:

Каков наилучший способ чтения в файле с разделителями табуляции на 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 в string, а затем использовать stringstream для этой строки для перебора полей.

Есть несколько библиотек, перечисленных в статье Википедии CSV_application_support Поддержка CSV_application_support.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top