Tengo un vector de punteros a char.
Quiero leer todas las líneas de un fichero y almacenar cada una de ellas en cada componente de mi vector de punteros.
No conozco a priori el tamaño del fichero.
El problema es que, no se por qué, al redimensionar el vector de punteros voy perdiendo las cadenas almacenadas. Este es mi código:
Código:
#define readErr(ifs) ifs.rdstate() & ifstream::failbit
char ** readFich(ifstream &ifs,const int &BUFFER_S){
char line[BUFFER_S];
char **dev=new char*[1],**aux=NULL;
//dev = vector de strings donde almaceno cada linea del texto.
//aux = var. auxiliar para apuntar a dev mientras ésta es redimensionada.
int i=1;
//leo línea
ifs.getline(line,BUFFER_S);
//la copio en el vector
dev[i]=new char[BUFFER_S];
strcpy(dev[i],line);
while(!ifs.eof()){
//Compruebo que no hay errores, si los hay, salgo del bucle.
if (readErr(ifs)!= 0){
cout<<"ERROR: INTENTANDO LEER MAS DE 256 CARACTERES"<<endl;
break;
}else{
//libero la memoria a la que apuntaba aux
delete[] aux;
//salvo la direcc. de memoria de dev
aux=dev;
//redimensiono dev
dev=new char*[i+1];
//le paso los datos que tenia hasta ahora
memcpy(dev,aux,sizeof(aux));
//le asigno la nueva linea
dev[i]=new char[BUFFER_S];
strcpy(dev[i],line);
//vuelvo a leer
ifs.getline(line, BUFFER_S);
}
i++;
}
return dev;
}
No entiendo cual es el problema, ¿Qué puedo hacer?
Muchas gracias