Hola a todos. Estoy tratando de cargar números que están un un archivo separado por comas en una matriz.
Para ejemplificar, el archivo contiene esto:
1,5,8,43,8
78,34,6,2
pero al cargar los valores a la matriz obtengo lo siguiente:
1,5,8,43,8
78,34,6,2
2
el codigo para cargar la matriz es el siguiente;
template <class T>
void Matriz<T>::cargarMatriz(string archivo, char delimitador)
{
ifstream ar ;
string linea, palabra;
stringstream is;//stream para procesar lineas
stringstream os;//stream para procesar palabras
ar.open(archivo.c_str());
while (getline(ar,linea))
{
is<<linea;
matriz.push_back(vector <T> ());
while(!is.eof() )
{
getline(is,palabra,delimitador);
os<<palabra;
T valor;
os>>valor;
matriz.back().push_back(valor);
os.clear();
}
is.clear();
}
ar.close();
}
y el código para mostrar el contenido es:
template <class T>
void Matriz<T>:: mostrar()
{
typedef typename vector<vector<T> >::iterator itfila;
itfila iteradorFila = matriz.begin();
itfila finDeFila = matriz.end();
for(;iteradorFila < finDeFila; iteradorFila++)
{
typedef typename vector<T> ::iterator itcolumna;
itcolumna iteradorColumna = iteradorFila->begin();
itcolumna finDeColumna = iteradorFila->end();
for(; iteradorColumna < finDeColumna ; iteradorColumna++ )
cout << setw ( 5 ) << *iteradorColumna;
cout<<endl;
}
}
El problema desaparece si abro el archivo a leer con un editor de texto, me sitúo en la última linea (que no tiene ningún valor numérico) y la borro dejando el cursor junto al último número de la última linea.
Interpreto que estoy leyendo esta linea (vacía) con getline() pero no estoy seguro de como evitarlo (con ignore() será?).
Saludos y gracias.