| Ficheros en C++ fstream |
|
|
| Manuales varios - Manuales de Programación |
| Escrito por Operata |
|
Pequeña introduccion de acceso a Ficheros en C++ mediante Streams Ya conocemos la forma usual de manejar la cónsola en C++, mediante los operadores y los streams cin y cout. El acceso a ficheros se realiza de una manera muy similar. Creación y destrucción de streams a ficheros Lo primero que hay que hacer es crear un stream a fichero. Las clases ifstream y ofstream representan ficheros para lectura y escritura respectivamente. Una vez construido un stream a través de estas clases, ya podemos acceder al fichero que representan: ofstream f(“Datos.txt”);
El acceso a través de los operadores hace extremadamente cómoda la lectura y escritura de datos de distinto tipo.f < < 3; f < < 3.5; f < < “Hola”; El fichero se cierra automáticamente al activarse el destructor del objeto, aunque también puede cerrarse de manera explícita mediante la función miembro close(). ifstream f(“Datos.txt”);
Si queremos abrir un fichero para lectura y escritura usaremos la clase mas general fstream, aunque en este caso deberemos indicar el tipo de acceso que deseamos realizar mediante las constantes ios.int k; f > > k; f.close (); // Cerrar fichero fstream f(“Datos.txt”, ios::in | ios::out);
int k;
f > > k;
f < < 3;
Indicadores error y fin de fichero Lo primero que hay que hacer es comprobar que el fichero se ha abierto correctamente, esto lo podemos hacer interrogando directamente al objeto: ifstream f(“Datos.txt”);
int k;
if (!f) throw ErrorApertura;
f > > k;
La función miembro bad() devuelve un valor distinto de cero si se produce algún tipo de problema durante el acceso al fichero (fallos de escritura/lectura, movimiento del puntero de lectura/escritura fuera del rango permitido, etc.). Finalmente, la función miembro eof() indica si hemos llegado al final del fichero: ifstream f(“Datos.txt”); Movimiento del puntero de acceso al fichero La función miembro seekg() permite situar el puntero de lectura escritura en la posición que se desee: ifstream f (“Datos.txt”); Al igual que en la versión existente en la biblioteca estándar de E/S de C, debe indicarse el punto de referencia para calcular el desplazamiento: ios::beg (comienzo), ios::cur (posición actual), ios::end (final). Otras funciones de lectura Si se desea leer una línea completa de un fichero de texto, puede usarse la función miembro getline(): ifstream f (“Datos.txt”);
char buf[80];
while (!f.eof ())
{ f.getline (buf, 80);
if (!f.bad ()) // No hay errores
cout < < buf;
}
struct dato
{
int k;
float f;
};
main ()
{ ifstream f (“Datos”);
dato p;
if (!f) throw ErrorApertura
f.read ((char *)&p, sizeof (p));
}
|




