Ver Mensaje Individual
  #1 (permalink)  
Antiguo 17/11/2013, 18:31
9egrgti
 
Fecha de Ingreso: noviembre-2013
Mensajes: 2
Antigüedad: 10 años, 6 meses
Puntos: 0
Pregunta Atoi no funciona

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