commit cec8a628bf30c958f05d503632852979cfeb8a73
parent 4adb08e6f7eda7233a4780c6a643cb23be998523
Author: Martin Klöckner <mjkloeckner@gmail.com>
Date: Mon, 17 Jun 2024 22:34:05 -0300
parse all fields of input file
Diffstat:
| M | main.cpp | | | 97 | +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------ |
1 file changed, 90 insertions(+), 7 deletions(-)
diff --git a/main.cpp b/main.cpp
@@ -2,11 +2,36 @@
#include <fstream>
#include <string>
#include <sstream>
+#include <cstdlib>
#include "list.h"
+#include "barrio.h"
+#include "parada.h"
#define INPUT_FILE_DELIM ','
+enum {
+ CALLE,
+ ALT_PLANO,
+ DIRECCION,
+ COORD_X,
+ COORD_Y,
+ COMUNA,
+ BARRIO,
+ LINEA_1,
+ LINEA_1_SENTIDO,
+ LINEA_2,
+ LINEA_2_SENTIDO,
+ LINEA_3,
+ LINEA_3_SENTIDO,
+ LINEA_4,
+ LINEA_4_SENTIDO,
+ LINEA_5,
+ LINEA_5_SENTIDO,
+ LINEA_6,
+ LINEA_6_SENTIDO
+};
+
int main (void) {
std::ifstream inputFile;
std::string line;
@@ -22,27 +47,85 @@ int main (void) {
return 1;
}
+ int comuna, alturaPlano;
+ double coordX, coordY;
+ std::string barrioName, calle, direccion;
+
std::getline(inputFile, line); // saltea la primer linea
while(std::getline(inputFile, line)) {
lineStream.str(line);
+
+ size_t field = CALLE;
while(std::getline(lineStream, token, INPUT_FILE_DELIM)) {
+ // verifico que si `token` es una cadena y contiene INPUT_FILE_DELIM
while((token[0] == '"') && (token[token.size() - 1] != '"')) {
std::string nextToken;
std::getline(lineStream, nextToken, INPUT_FILE_DELIM);
token += INPUT_FILE_DELIM + nextToken;
}
- tokens.insert(token);
+
+ switch(field) {
+ case CALLE:
+ calle = token;
+ break;
+ case ALT_PLANO:
+ token.erase(0, 1);
+ token[token.size() - 1] = '\0';
+ alturaPlano = std::atoi(token.c_str());
+ break;
+ case DIRECCION:
+ direccion = token;
+ break;
+ case COORD_X:
+ break;
+ case COORD_Y:
+ break;
+ case COMUNA:
+ token.erase(0, 1);
+ token[token.size() - 1] = '\0';
+ comuna = std::atoi(token.c_str());
+ break;
+ case BARRIO:
+ barrioName = token;
+ break;
+ case LINEA_1:
+ break;
+ case LINEA_1_SENTIDO:
+ break;
+ case LINEA_2:
+ break;
+ case LINEA_2_SENTIDO:
+ break;
+ case LINEA_3:
+ break;
+ case LINEA_3_SENTIDO:
+ break;
+ case LINEA_4:
+ break;
+ case LINEA_4_SENTIDO:
+ break;
+ case LINEA_5:
+ break;
+ case LINEA_5_SENTIDO:
+ break;
+ case LINEA_6:
+ break;
+ case LINEA_6_SENTIDO:
+ break;
+ default:
+ break;
+ }
+ field++;
}
+ std::cout << "{\n barrio: " << barrioName << ",\n"
+ << " calle: \"" << calle << "\",\n"
+ << " comuna: " << comuna << ",\n"
+ << " direccion: \"" << direccion << "\",\n"
+ << " alturaPlano: " << alturaPlano << "\n}\n";
lineStream.clear();
}
inputFile.close();
- tokens.startCursor();
- while(tokens.forwardCursor()) {
- token = tokens.getCursorData();
- std::cout << ((token == "") ? "" : token.append("\n"));
- }
-
return 0;
}