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:
El archivo ListaLibros.txt contieneifstream 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();
Código:
Pero en la lista se almacena asi: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
Código:
Por favor, necesito su ayuda porque no entiendo realmente donde esta el error. Gracias de antemano 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


