Как лучше всего читать файл с разделителями табуляции на C ++ и сохранять каждую строку как запись? Я искал библиотеку с открытым исходным кодом, чтобы помочь с этим, но безуспешно, поэтому похоже, что мне придется написать свою собственную.
Чтение файлов с разделителями в C ++
comment
Я был поражен тем, что когда я искал это, я не смог просто взять откуда-то код для такой простой вещи. В любом случае, я написал блог о своем решении (на основе других ответов на Stack Exchange) C ++ Tidbits
- person Wybird666   schedule 24.07.2014
Ответы (3)
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
и т. Д.
person
Community
schedule
02.07.2009
этот код работает с ботом в Visual Studio. ошибка - ошибка C4430: отсутствует спецификатор типа - предполагается int. Я включил string.h
- person tumchaaditya; 26.04.2012
Код отлично компилируется на CentOS с g ++. Не уверен, что вы не добавили, чтобы это работало
- person thaweatherman; 22.07.2013
Нет проблем с использованием iostreams - вы можете прочитать каждую строку с помощью getline в строку, а затем использовать stringstream в этой строке для итерации по полям.
person
EFraim
schedule
02.07.2009
В статье CSV_application_support перечислены несколько библиотек.
person
Etienne PIERRE
schedule
03.07.2009