Dev - C++ - Lectura de Archivo

 
Vista:
sin imagen de perfil

Lectura de Archivo

Publicado por Julián (4 intervenciones) el 23/02/2015 20:41:40
Buenos días amigos estoy de nuevo por aquí debido a que tengo un problema con la lectura de archivos en C++, quiero saber como leer una línea de números enteros y guardarla y hacer esto repetidamente hasta que sea fin de archivo, el problema es que no se como detectar el fin de una línea para luego comenzar a leer la siguiente estoy enrredado con esto:

Aquí un ejemplo del archivo:

1 2 3 4 5 6 // !uiero guardar esto en una cola
2 3 2 5 // Guardar todo esto en una Cola
5 1 2 // Guardar todo esto en una cola

Estaba probando con este código pero no me funciona:

int main()
{
Pila<int> p,p2;
cola<int> c,c2;
ifstream entrada;
ofstream salida;
int n,i;
//char d;

entrada.open("panquecas.in");
salida.open("panquecas.out");
if(entrada.is_open())
{
entrada >> n;
while(!entrada.eof())
{
c.encolar(n);
entrada >> n;
if(n == '\n') // AQUI VERIFICO SI EL PROXIMO CARACTER ES UN SLATO DE LINEA
{
entrada >> n; // COMIENZO A GUARDAR EN LA OTRA COLA
for(i=1; i<=3; i++)
{
c2.encolar(n);
entrada >> n;
}
}
}
cout << "\n\nCola 1: " << c<< endl;
cout << "\n\nCola 2: " << c2<< endl;
entrada.close();
salida.close();
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil

Lectura de Archivo

Publicado por Julián (4 intervenciones) el 24/02/2015 23:20:58
Vangodp me sirvío el video 7 (While cin) lo que no he logrado es como hacer que me lea línea a línea he investigado y leído pero no he dado con la solución, hice el "while(entrada >> n) pero me lee todos los datos del archivo, este es mi código:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#include <iostream>
#include <fstream>
#include "pila.h"
#include "cola.h"
using namespace std;
 
void apilarPanquecas(cola<int> c, Pila<int> &p);
int determinarPosicion(cola<int> c, Pila<int> p);
void voltearPanquecas(Pila<int> &p, int pos);
 
 
int main()
{
	Pila<int> p,p2;
	cola<int> c,c2;
	ifstream entrada;
	ofstream salida;
	int n;
	//char d;
 
	entrada.open("panquecas.in");
	salida.open("panquecas.out");
	if(entrada.is_open())
	{
		while(!entrada.eof())
		{
			while(entrada >> n)
			{
				c.encolar(n);
			}
			cout << "\n\nCola 1:  " << c<< endl;
			c.vaciarCola();
		}
	}else{
			printf("\n\nERROR");
	}
	entrada.close();
	salida.close();
}


este es mi archivo:

5 4 3 2 1 //Quiero encolar todos esto, procesarlos y luego
1 2 5 //Encolar todos estos y procesarlos. (el código que tengo me encola todos 8 elementos del archivo) .
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Lectura de Archivo

Publicado por Julián (4 intervenciones) el 25/02/2015 04:27:56
Buenas noches amigos por fin logré hacer lo que quería después de horas de intentos y búsqueda en la web la verdad no se si para hacer una simple lectura (Digo simple por como se ve a simple vista) pero en realidad no lo fue (al menos para mí) hay que hacer tantas cosas como las que hice.

A continuación dejo el código y unas capturas de pantalla con el fin de colaborar con personas que quieran hacer lo mismo y no tarden horas en hacer este "simple" código.


Código, Archivo de Prueba y Resultado:

CC2

Código:

http://k30.kn3.net/C/2/A/4/B/A/9A6.png
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de vangodp
Val: 73
Ha disminuido 1 puesto en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

Lectura de Archivo

Publicado por vangodp (287 intervenciones) el 25/02/2015 10:08:20
Se me hace difícil explicarte eso por aquí XD
Hay muchas formas de hacerlo... Binario, texto, longitud constante o variable.....

Si siempre es la misma cantidad de números por fila es fácil. Si varia también XDD, pero me refiero que depende que quieres hacer.

Dime como será el archivo.
1º texto o binario
2º tipo de dato
3º ¿tendrá el mismo numero de variables en una misma linea? Si es así es que será de texto normal ya que binarios no permiten saltos de linea, son continuados. El otro también pero en fin, como te dije será mucha tela para explicarte por aquí.

Si quieres agregarme a skype y un día te lo explico mejor. Me llamo igual allá.

Ese lo hice hace poco para un usuario de otro foro. Básicamente lo que hace es cear un archivo binario de 30 enteros dentro, luego lo leo esos 30 y parto el contenido en 3 archivos de 10 enteros cada. Pero como ves es binario y la longitud es constante. http://codepad.org/g7W5RPkq

No se si te va servir pero ahí lo dejo para que veas. Ademas es para C... ¿Tu quieres para C++ no?

Si quieres agregarme y me pillas on te explico.

Suerte!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar