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.

È stato utile?

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
scroll top