Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: julian21931500 en 25 Febrero 2015, 00:15 am



Título: Lectura de Línea a Línea de un archivo de números enteros en C++
Publicado por: julian21931500 en 25 Febrero 2015, 00:15 am
Ante que todo un cordial saludo a todos los programadores de esta famosa comunidad, soy nuevo en este foro y estoy creando este tema porque tengo un problema para leer linea a linea un archivo de números enteros.

El problema es que tengo un archivo, por ejemplo:

1 2 3 5 8 5
4 5 6 8
1 2 3

lo que quiero hacer es leer linea a línea cada número y guardarlos en una cola, he intentando numerosas forma pero siempre me termina leyendo todos los datos hasta el Fin del Archivo, he probado leyendo y comparando cada dato que leo con el '  \n ' pero no me funciona, también intenté haciendo esto while (entrada >> n) y tampoco me funciona, si alguien me pudiera facilitar el código se lo agradecería (No es flojera y tampoco la razón no es que no he investigado ni nada, por el contrario desde ayer ando en esto y no he podido solventar ese problema), repito, no es flojera si me pudieran facilitar el código y explicarme el xq es así se los agradecería de verdad ya que lo necesito. Gracias de antemano a todos los que me puedan ayudar y a los que no gracias también por tomarse el tiempo en leer el tema.


Título: Re: Lectura de Línea a Línea de un archivo de números enteros en C++
Publicado por: ivancea96 en 25 Febrero 2015, 00:20 am
Código
  1. ifstream f(...);
  2. string t;
  3. getline(f,t); //Linea del archivo hasta salto de linea


Título: Re: Lectura de Línea a Línea de un archivo de números enteros en C++
Publicado por: julian21931500 en 25 Febrero 2015, 00:38 am
Ivancea96 antes que nada gracias por  responder mi pregunta tan rápido, tengo una duda, la función getline no es solo para datos de tipos caractér?


Título: Re: Lectura de Línea a Línea de un archivo de números enteros en C++
Publicado por: julian21931500 en 25 Febrero 2015, 00:51 am
Gracias, ahora sí puedo leer línea a línea, pero como hago para guardar cada número en una cola? con el getline() lee toda la línea completa y quiero es ir encolando cada número de cada línea en una cola valga la redundancia.


Título: Re: Lectura de Línea a Línea de un archivo de números enteros en C++
Publicado por: ivancea96 en 25 Febrero 2015, 01:01 am
Ahora ve leyendo cada linea y ve sacando los numeros. Tienes funciones como stoi() para transformar cadenas a números. Para separar, tienes, por ejemplo, string.find().


Título: Re: Lectura de Línea a Línea de un archivo de números enteros en C++
Publicado por: julian21931500 en 25 Febrero 2015, 01:05 am
Ok, y esta sería la forma "eficiente" de hacer eso? no hay un más directa con la cuál yo pueda ir leyendo número a número e ir encolando de una vez hasta encontrada el fin de línea ( " \n " ) y luego comenzar con la siguiente línea?


Título: Re: Lectura de Línea a Línea de un archivo de números enteros en C++
Publicado por: rir3760 en 25 Febrero 2015, 02:36 am
Formas para extraer los números de la linea de texto hay varias, por ejemplo utilizando un objeto de la clase istringstream (http://www.cplusplus.com/reference/sstream/basic_istringstream/) para tratar la linea como un stream:
Código
  1. #include <sstream>
  2. using std::istringstream;
  3.  
  4. // ...
  5.  
  6. string linea = "1 2 3 4";
  7. int num;
  8.  
  9. // ...
  10.  
  11. istringstream in(linea);
  12. while (in >> num)
  13.   cout << num << endl;

Un saludo


Título: Re: Lectura de Línea a Línea de un archivo de números enteros en C++
Publicado por: julian21931500 en 25 Febrero 2015, 04:11 am
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:

(http://k32.kn3.net/7/7/9/F/B/7/CCB.png)   

Código:

(http://k30.kn3.net/B/F/C/5/4/6/410.png)

Gracias a todos por su ayuda. Saludos!