Pregunta

    

Esta pregunta ya tiene una respuesta aquí:

         

¿Cuál es la mejor manera de leer en un archivo delimitado pestaña en C ++ y almacenar cada línea como un registro? He estado buscando una biblioteca de código abierto para ayudar con esto, pero no han tenido éxito así que parece que voy a tener que escribir mi propia.

¿Fue útil?

Solución

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);
  }
}

Esto le ayudará a empezar. No hace ninguna comprobación de que cada fila tiene el mismo número de campos, permitir escapar field_delim, etc.

Otros consejos

No hay ningún problema en el uso de iostreams -. Se podía leer cada línea con getline en cadena y, a continuación, utilizar stringstream en esa cadena para iterar sobre los campos

Hay algunas bibliotecas enumeradas en el artículo de Wikipedia CSV_application_support .

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top