PDA

Ver la versión completa : [C++] Leer ficheros .txt con C++



Endher
07/12/2010, 16:32
Hola a todos.

De nuevo, traigo una duda sobre C++ porque no he encontrado nada concreto para saber hacerlo...

Tengo un programa que sirve para calcular los ángulos de doblaje de un robot. El programa comienza pidiendo una serie de parámetros, y una vez has terminado, das al usuario la opción de guardar toda esa información en un fichero. Esto lo tengo hecho y funciona sin problemas, lo que pasa es que también tengo que dar la opción, al inicio del programa, de leer los datos de un archivo igual que el que he guardado antes (misma estructura y demás), pero no tengo ni idea de como se hace eso...

¿Alguien sabría echarme una mano? Gracias :brindis:

pakoito
07/12/2010, 16:34
¿Tiene que ser un txt? ¿no puede ser un fichero binario?

Endher
07/12/2010, 16:36
No especifica nada, así que supongo que dará lo mismo una cosa que otra. Pero como en C siempre he trabajado con .txt lo he hecho por inercia...

GameMaster
07/12/2010, 16:41
Pues tendras una funcion similar a la que usas para guardar, estilo fsave, fopen.

pakoito
07/12/2010, 16:43
No especifica nada, así que supongo que dará lo mismo una cosa que otra. Pero como en C siempre he trabajado con .txt lo he hecho por inercia...
Si usas binarios los ficheros no son legibles ni editables como txt, si esto no te importa, buscate info sobre ellos porque son los que tienes que usar.

jduranmaster
07/12/2010, 16:49
usando la función fscanf() puede hacerlo leyendo con el formato que quieras.

hardyx
07/12/2010, 17:18
Básicamente es usar funciones similares a las que leen carácteres o números por consola, pero sobre un archivo y con una f delante. fopen(), fgets(), fscanf(), fclose()

http://www.chuidiang.com/clinux/ficheros/fichero-texto.php

pakoito
07/12/2010, 17:22
Básicamente es usar funciones similares a las que leen carácteres o números por consola, pero sobre un archivo y con una f delante. fopen(), fgets(), fscanf(), fclose()

http://www.chuidiang.com/clinux/ficheros/fichero-texto.php
La cosa es que si usa un txt tiene luego que parsear lo de dentro, que es un coñazo.

Ñuño Martínez
07/12/2010, 17:50
Si es C++, te recomiendo que uses corrientes (streamio.h, si no recuerdo mal), tanto si es texto como binario.

Si además usas Builder C++ y quieres que sean archivos de texto, entonces usa TStringList (en Delphi está en Classes, así que supongo que estará en classes.h). Te ahorrarás muchísimo trabajo.

jduranmaster
07/12/2010, 17:56
lo mismo fscanf te resulta un poco molesta porque tienes que indicarle el tipo de lo que vas a leer, asi que dado que estas en C++ puedes usar lectura basada en streams:

http://wwwdi.ujaen.es/asignaturas/eedd2/fstreams.pdf

hardyx
07/12/2010, 18:14
La cosa es que si usa un txt tiene luego que parsear lo de dentro, que es un coñazo.
Si te lo montas bien con un formato sencillo no es complejo. Pero si es más complejo, es mejor ficheros binarios y sin problema. Ejemplo de fichero sencillo:

fscanf(f, "%d %d %s\n", &indice, &edad, &nombre)
1 23 miguel
2 15 maria
3 28 pedro

Endher
07/12/2010, 18:38
Gracias a todos :)

Como la estructura es sencilla, lo he mantenido en un .txt y mediante ifstream he conseguido leer los datos. Al final he encontrado el como hacerlo buscando en google como implementar las cosas que me decíais + el link de Hardyx, así que muchas gracias :).

Para terminar de coronarme tendría que permitir elegir la ruta para guardar y abrir el fichero, pero eso creo que ya es excesivo XD