Ver Mensaje Individual
  #5 (permalink)  
Antiguo 20/04/2013, 04:35
Avatar de Chamibus
Chamibus
 
Fecha de Ingreso: mayo-2005
Mensajes: 4
Antigüedad: 19 años
Puntos: 0
Respuesta: Como guardar una lista en un archivo, y luego leer el archivo

Creo que lo que necesitas es esto:

Para poder abrir un fichero para leer y escribir, debes incluir la librería fstream. Aunque eso implica la inclusión automática de la librería iostream, es prudente incluir iostream si planeas usar cin, cout, etc.

Para abrir un fichero para lectura, debes crear un objeto ifstream que se usará como cin. Para crear un fichero de escritura, se crea un objeto ofstream que se comporta como cout. Una vez que tienes abierto el fichero puedes leer o escribir en él como si usaras cualquier objeto ostream.

Una de funciones las más útiles de la librería iostream es getline(), que permite leer una línea (terminada en nueva línea) y guardarla en un objeto string 5. El primer argumento es el objeto ifstream del que se va a leer la información y el segundo argumento es el objeto string. Cuando termina la llamada a la función, el objeto string contiene la línea capturada.
Aquí hay un ejemplo que copia el contenido de un fichero en otro.

// Copy one file to another, a line at a time
#include <string>
#include <fstream>
using namespace std;
int main() {
ifstream in("Scopy.cpp"); // Open for reading
ofstream out("Scopy2.cpp"); // Open for writing
string s;
while(getline(in, s)) // Discards newline char
out << s << "\n"; // ... must add it back
}
Para abrir los ficheros, únicamente tienes que controlar los nombres de fichero que se usan en la creación de los objetos ifstream y ofstream.


getline() lee los caracteres de cada línea hasta que descubre un salto de línea . Sin embargo, descarta el caracter de nueva línea y no lo almacena en el objeto string. Por lo que si quieres copiar el fichero de forma idéntica al original, debes añadir el caracter de nueva línea como te muestro arriba.
Otro ejemplo es copiar el fichero entero en un único objeto string:

// Read an entire file into a single string
#include <string>
#include <iostream>
#include <fstream>
using namespace std;
int main() {
ifstream in("FillString.cpp");
string s, line;
while(getline(in, line))
s += line + "\n";
cout << s;
}
Debido a la naturaleza dinámica de los strings, no hay que preocuparse de la cantidad de memoria que hay
que reservar para el string. Simplemente hay que añadir cosas y el string irá expandiéndose para dar cabida a lo que le introduzca.
Una de las cosas agradables de poner el fichero entero en una cadena es que la clase string proporciona funciones para la búsqueda y manipulación que le permiten modificar el fichero como si fuera una simple línea.

Sin embargo, tiene sus limitaciones. Por un lado, a menudo, es conveniente tratar un fichero como una colección de líneas en vez de un gran bloque de texto. Por ejemplo, si quieres añadir numeración de líneas es mucho más fácil si se tiene un objeto string distinto para cada línea.

El ejemplo está ilustrado con archivos .cpp, pero puedes utilizar perfectamente .txt para las listas de teléfonos que necesitas.

Última edición por Chamibus; 20/04/2013 a las 04:42