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