Si lo resolvieras en C++, este problema podria resolverse sin usar tanto malabarismo.
Re-usando las mismas ideas que en
una discusion anterior, puedes:
- reemplazar los parentesis por espacios en blanco, lo mismo con las comas. Con ello te beneficias de no tener que tokenizar y puedes leer todo directamente usando un istringstream (ver
discusion anterior). El ultimo parentesis no es necesario reemplazarlo, realmente.
- Una vez que has separado todo con espacios ya puedes hacer llegar los datos a donde quieras, por ejemplo a variables de tipo entero. En tu caso, campos enteros de una struct.
No está completo todo, pero la idea es parecido a esto:
Código C++:
Ver original#include <iostream>
#include <sstream>
#include <fstream>
#include <algorithm>
using namespace std;
int main()
{
string line;
ifstream f ("archivo.txt");
if (!f.
is_open()) exit(1);
int v1, v2, n;
while ( getline (f,line) ) {
cout << "Lei: " << line << '\n';
replace( line.begin(), line.end(), '(', ' ');
replace( line.begin(), line.end(), ',', ' ');
istringstream ss(line);
ss >> v1 >> v2;
cout << " v1: " << v1 << " v2: " << v2 << " { ";
while( ss >> n ) {
cout << n << " ";
}
cout << "}" << endl;
}
f.close();
}
Supongo que este es el empujón necesario y suficiente para empezar.