Hola y gracias por responder.
Primero quería aclarar que olvidé modificar la linea 20: while(!is.eof() ) por una comprobación como en la linea 13, quedaría así:
20:while( getline(is,palabra,delimitador)) y la linea 23 desaparece. No es buena idea usar eof(). Así el error del último número duplicado desaparece pero igual queda una linea vacía si hay un "enter" al final del archivo.
No use isdigit() porque no quería desglosar el string y leer por caracteres.
Quería comprobar el valor completo, algo así:
#include<typeinfo>
...
if( typeid(valor).name()==typeid(T).name())
matriz.back().push_back(valor);
else
matriz.back().push_back(-99);
pero yo declaro valor del tipo T asi que no sirve.
Quizá sea un error usar un stringstream para formatear los datos del archivo.
Otra cosa que no entiendo es que si, usando el código con la modificación de arriba, si pongo una letra en vez de un número en el archivo la matriz se llena con el último valor numérico obtenido antes de la letra en el resto de la matriz.
por ejemplo, si la matriz en el archivo es:
1,2,3,4
5,k,6,7
la matriz cargada se llena así:
1,2,3,4
5,5,5,5
Creo que en cualquier momento
.
Igual no se si es la forma correcta de generar una matriz, tal vez deba cambiar el enfoque.
Saludos.