Hola a todos.
Tengo un problema al usar la función atoi de c++. Verán, lo que necesito es cargar unos archivos de texto plano a una lista de datos. Eso ya lo tengo. Algunos de esos datos son tipo int y necesito convertirlos de string a int. Lo que hice es que cada linea contenga todo lo que va en un nodo de la lista separado por tabuladores, leo la linea con getline y la almaceno en una variable string y después compruebo en donde esta el tabulador y lo almaceno en otra variable tipo string. Como son varias lineas tengo eso en un ciclo while para que lea todas las lineas del archivo.
Pero aquí viene el problema: En el primer bucle lee todos los datos prefecto, pero desde el segundo, los valores que debería convertir a int los pone 0. Los otros datos no importa porque quiero que se mantengan como string, pero los datos numéricos les pone cero.
El código es el siguiente:
Código:
ifstream archivoListaLibros("ListaLibros.txt");
if(!archivoListaLibros.fail())
{
string aux,auxLibro[8];
while(getline(archivoListaLibros,aux))
{
int i=0,j=0;
for(;aux[i]!='\t';i++)auxLibro[j]+=aux[i];
i++;j++;
for(;aux[i]!='\t';i++)auxLibro[j]+=aux[i];
i++;j++;
for(;aux[i]!='\t';i++)auxLibro[j]+=aux[i];
i++;j++;
for(;aux[i]!='\t';i++)auxLibro[j]+=aux[i];
i++;j++;
for(;aux[i]!='\t';i++)auxLibro[j]+=aux[i];
i++;j++;
for(;aux[i]!='\t';i++)auxLibro[j]+=aux[i];
i++;j++;
for(;aux[i]!='\t';i++)auxLibro[j]+=aux[i];
i++;j++;
for(;aux[i]!='\0';i++)auxLibro[j]+=aux[i];
listaLibros->agregarLibro(atoi(auxLibro[0].c_str()), //Algo aquí falla en el segundo bucle
auxLibro[1],
auxLibro[2],
atoi(auxLibro[3].c_str()), //Algo también
auxLibro[4],
auxLibro[5],
atoi(auxLibro[6].c_str()), //Algo también
atoi(auxLibro[7].c_str())); //y aquí
for(int k=0;k<=j;k++){
for(int l=0;l<auxLibro[k].size();l++)
auxLibro[k][l]='\0';
}
for(int l=0;l<aux.size();l++)
aux[l]='\0';
}
}
archivoListaLibros.close();
El archivo ListaLibros.txt contiene
Código:
123456789 Don Quijote de la Mancha Miguel de Cervantes 1900 Es la historia de un viejo que se cree caballero Editorial Magenta 123 5
987654321 Sherlock Holmes EdgarSalguero 2000 Detective en busca de la verdad Editorial Cian 321 10
13579 Mundos magicos andres 2013 Esto es una descripcion Editorial Yellow 65 3
Pero en la lista se almacena asi:
Código:
ISBN: 0
Titulo: Sherlock Holmes
Autor: EdgarSalguero
Anio: 0
Descripcion: Detective en busca de la verdad
Editorial: Editorial Cian
Numero de pagina: 0
Cantidad: 0
ISBN: 123456789
Titulo: Don Quijote de la Mancha
Autor: Miguel de Cervantes
Anio: 1900
Descripcion: Es la historia de un viejo que se cree caballero
Editorial: Editorial Magenta
Numero de pagina: 123
Cantidad: 5
ISBN: 0
Titulo: Mundos magicos
Autor: andres
Anio: 0
Descripcion: Esto es una descripcion
Editorial: Editorial Yellow
Numero de pagina: 0
Cantidad: 0
Por favor, necesito su ayuda porque no entiendo realmente donde esta el error. Gracias de antemano