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.
ifstream f(...);
string t;
getline(f,t); //Linea del archivo hasta salto de linea
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?
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.
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().
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?
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:
#include <sstream>
using std::istringstream;
// ...
string linea = "1 2 3 4";
int num;
// ...
istringstream in(linea);
while (in >> num)
cout << num << endl;
Un saludo
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!