La lecture des fichiers délimités en C ++ [double]
-
21-08-2019 - |
Question
Cette question a déjà une réponse ici:
Quelle est la meilleure façon de lire dans un onglet fichier délimité en C ++ et stocker chaque ligne comme un enregistrement? Je suis à la recherche d'une bibliothèque open source pour aider, mais ont échoué il semble que je vais devoir écrire mon propre.
La solution
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);
}
}
Cela vous commencer. Il ne fait aucune vérification que chaque ligne a le même nombre de champs, permettent d'échapper field_delim
, etc.
Autres conseils
Il n'y a pas de problème à l'aide iostreams -., Vous pouvez lire chaque ligne avec getline en chaîne, et ensuite utiliser stringstream sur cette chaîne à itérer sur les champs
Il y a quelques bibliothèques énumérées dans l'article de wikipedia CSV_application_support .