Hola a todos,
Hace mucho que no programo en C++ y estoy peleandome intentando hacer lo siguiente:
Tengo un archivo, out.tr, que es del siguiente estilo:
+ 2.272251 6 7 cbr 210 ------- 0 0.0 7.0 138 211
- 2.272251 6 7 cbr 210 ------- 0 0.0 7.0 138 211
r 2.273528 2 5 pareto 210 ------- 2 2.0 9.0 187 803
+ 2.273528 5 6 pareto 210 ------- 2 2.0 9.0 187 803
Mi intención es poder leerlo y poner cada uno de los valores en una variable. De momento he conseguido lo siguiente:
#include <iostream>
#include <iomanip>
#include <fstream>
#include <stdio.h>
#include <string.h>
using namespace std;
int main() {
char * pch;
char origen[2],desti[2];
char event,emisor,receptor,flux;
string linia;
//DECLARACIO VARIABLE FITXER
ifstream fitxer;
//OBRIR FITXER LECTURA
fitxer.open("TCL/out.tr");
if (!fitxer) {
cerr << "Error al llegir fitxer";
return 1;
}
while(getline(fitxer,linia))
{
char liniaString[linia.length()];
for (int i=0; i<=linia.length() ; i++){
liniaString[i]=linia[i];
}
pch=strchr(liniaString,' ');
event=liniaString[pch-liniaString-1];
pch=strchr(pch+1,' ');
emisor=liniaString[pch-liniaString+1];
pch=strchr(pch+1,' ');
receptor=liniaString[pch-liniaString+1];
for (int i = 0; i<4 ; i++){
pch=strchr(pch+1,' ');
}
flux=liniaString[pch-liniaString+1];
pch=strchr(pch+1,' ');
for (int i=0; i<3; i++){
origen[i]=liniaString[pch-liniaString+i+1];
}
pch=strchr(pch+1,' ');
for (int i=0; i<3; i++){
desti[i]=liniaString[pch-liniaString+i+1];
}
}
fitxer.close();
return 0;
}
Aquí aún no he cogido todos los datos pero sí los más importantes(los campos 1,2,3,8,9 y 10). Mi intención ahora es poder coger cada uno de los campos pero no encuentro la manera mas eficiente. No habría algún método para poder ir leyendo el fichero hasta encontrar un espacio y asignarlo a una variable?
Alguien me podría sugerir alguna solución muchas gracias de antemano.
Fran