Lettura file delimitati in C ++ [duplicato]
-
21-08-2019 - |
Domanda
Questa domanda ha già una risposta qui:
Qual è il modo migliore per leggere in un file delimitato scheda in C ++ e memorizzare ogni riga come un disco? Sono stato alla ricerca di una libreria open source per aiutare con questo, ma non hanno avuto successo così sembra che dovrò scrivere il mio.
Soluzione
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);
}
}
Questo vi permetterà di cominciare. Non fa alcun controllo che ogni riga ha lo stesso numero di campi, consentire la fuga field_delim
, ecc.
Altri suggerimenti
Non c'è nessun problema nell'uso iostreams -. Si poteva leggere ogni riga con getline in stringa e quindi utilizzare stringstream su quella stringa di iterare su campi
Ci sono alcune librerie elencate nell'articolo di Wikipedia CSV_application_support .
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow