La lectura de archivos delimitados en C ++ [duplicado]
-
21-08-2019 - |
Pregunta
Esta pregunta ya tiene una respuesta aquí:
- ¿Cómo puedo leer y analizar los archivos CSV en C ++? 33 respuestas
¿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.
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 .