Lectura de Línea a Línea de un archivo de números enteros en C++

Iniciado por julian21931500, 25 Febrero 2015, 00:15 AM

0 Miembros y 1 Visitante están viendo este tema.

julian21931500

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.

ivancea96

Código (cpp) [Seleccionar]
ifstream f(...);
string t;
getline(f,t); //Linea del archivo hasta salto de linea

julian21931500

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?

julian21931500

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.

ivancea96

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().

julian21931500

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?

rir3760

Formas para extraer los números de la linea de texto hay varias, por ejemplo utilizando un objeto de la clase istringstream para tratar la linea como un stream:
Código (cpp) [Seleccionar]
#include <sstream>
using std::istringstream;

// ...

string linea = "1 2 3 4";
int num;

// ...

istringstream in(linea);
while (in >> num)
   cout << num << endl;


Un saludo
C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language

julian21931500

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:

   

Código:



Gracias a todos por su ayuda. Saludos!