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.

Était-ce utile?

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 .

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top