Esto ya lo tiene implementado, solo que en vez de vectores esta usando listas: el elemento L#0 de la lista es la linea F#0 del archivo, el L#1 es F#1, asi hasta el total de lineas del archivo que será igual al size() de elementos de la lista. Con esto puedes comparar los datos ya parseados simplemente accediendo al indice de linea que se correspondera con el indice de lista, nada mas sencillo.
Si por lo contrario quieres hacer comparaciones de la linea textual sin tener que repaginar una nueva linea desde los datos parseados y sin tener que releer el archivo, solo tienes que añadir un string al struct de datos, en el momento de leer guardas una copia y listos:
Código:
typedef struct {
string str_linia_font;
} DADES_ARXIU;
while(getline(fitxer,linia)) {
...
while(pch != NULL) {
switch(camp) {
...
}
...
}
...
camps.str_linia_font = linia;
llista.push_back(camps);
...
}
Facil no? De esta forma tienes las dos opciones: el indice del elemento dentro de la lista equivale al indice de linea dentro del archivo, y el string de ese elemento es una copia de la linea leida.
Tambien puedes usar esta linea como argumento de letcura en 'while(getline(fitxer, linia)) {}', luego segun el post anterior o bien usas strtok_r o haces una copia y parseas con strtok sobre la copia, de esta forma tendras intacta la linea leida dentro del struct
Código:
//string linia; //no necesitas esta variable
while(getline(fitxer, camps.str_linia_font)) {
...
}
Depende del tipo de comparaciones que quieras hacer, usaras una opcion u otra: la primera ya la tienes, la segunda consiste en un simple string.
vosk